2017-01-28 1 views

답변

1

정수에 같은 일을 테스트

> x = function(){} 
<- function(){} 
> x.a = "Asd" 
<- "Asd" 
> x 
<- function(){} 
> x.a 
<- "Asd" 

이에 대해 정의되지 않은 과제

> x = 1 
<- 1 
> x.a = 123 
<- 123 
> x 
<- 1 
> x.a 
<- undefined 
6

첫 번째 결과 무엇보다도 사양이 명시 적으로있어 상태는 사실은 거기에 얼마나 객체는 많은 곳에서 here을 포함하여 "함수"라는 용어를 정의합니다.

기능

그것을 증명하는 많은 방법이있다,

경험적으로 서브 루틴으로 호출 할 수있는 개체 유형의 멤버,하지만 간단한 중 하나는 속성에 값을 할당하는 것입니다 그것은 :

var foo = function() { }; 
 
foo.myProperty = "my value"; 
 
console.log(foo.myProperty); // "my value"

또는 특이한 프로토 타입 하나를 (사용, 하지만 가능) 만 개체로 그것을 증명하는 프로토 타입이 될 수 있습니다

var foo = function() { }; 
 
var obj = Object.create(foo); 
 
console.log(Object.getPrototypeOf(obj) === foo); // true

1

당신은 아주 간단하게 이것을 증명 할 수있는 호출 개체입니다 :

console.log(Object.getPrototypeOf(Function.prototype)); 
 
console.log(Object.prototype === Object.getPrototypeOf(Function.prototype)); 
 

 
// or, being evil 
 
Object.prototype.testFn =() => console.log('Exists on all objects'); 
 
({}).testFn(); 
 
[].testFn(); 
 
(new Number(5)).testFn(); 
 
Math.sqrt.testFn();

첫 번째 두 줄은 Function.prototype을 넘는 프로토 타입 체인의 다음 단계가 Object.prototype임을 보여줍니다.

다른 행은 Object.prototype (은 심각하게 이것을 수행하지 않습니다.)에 속성을 추가 할 수 있으며 모든 개체에 존재한다는 것을 보여줍니다.이 경우 비어있는 객체, 빈 배열, Number 객체 및 Math.sqrt 함수에서 테스트합니다. Object.prototype에 속성 (이 경우 함수)을 추가하면 다른 모든 속성도 속성을 얻습니다.

0

console.log (Function.prototype instanceof Object);

관련 문제