구조 함수 2
function Foo(){
}
Foo.prototype.constructor === Foo//true
var obj = new Foo()
obj.constructor === Foo//true
함수의prototype 대상에constructor 속성이 있습니다. 이 속성의 기본값은 현재 함수입니다.obj 대상이 왜 constructor에 접근할 수 있는지에 대해서는 앞서 언급한 대상의 [[Prototype]에 대한 지식을 되돌아봐야 한다.obj의 [[Prototype]] 속성이 가리키는 값은 Foo 함수이기 때문에 obj 자체에서 어떤 속성을 찾을 수 없을 때 원형 체인에서 찾습니다.
1. 구조 함수와 일반 호출의 혼합
하나의 함수가 구조 함수인지 아닌지는 쓰기와 관계가 없다.호출 방식과 관계가 있다.
function fun(){
console.log("?")
}
var obj = new fun()
console.log(obj)//fun {}
console.log(Object.getPrototypeOf(obj) === fun.prototype)//true
이 기능을 통해 데이터를 공유할 수 있습니다.
function fun(){}
fun.prototype.a = "haha"
var obj = new fun()
var obj2 = new fun()
console.log(obj.a)//"haha"
console.log(obj2.a)//"haha"
console.log(Object.getOwnPropertyDescriptor(fun.prototype, "a"))//"writable":true...
obj.a = "self"
console.log(obj.a)//"self"
console.log(obj2.a)//"haha"
funtion foo(){
return {"w": 9}
}
var obj = new foo()
console.log(obj)//{"w": 9}
console.log(Object.getOwnPrototypeOf(obj) == Object.prototype)//true
function foo(){
return 1
}
var obj = new foo()
console.log(obj)//foo {}
console.log(Object.getPrototypeOf(obj) == foo.prototype)//true
주의해야 할 것은 여기서 말하는 비 대상은 어떤 것들입니까? 예를 들어 수치, 문자열, 볼 값 등입니다.어떤 것이 안 됩니까? 예를 들면, 수조, 함수 등입니다.
function foo(){
this. a = 1
}
var obj = foo()
console.log(obj)//undefined
// undefined, 。
물론 규범에 따라 솔직하게 쓰면 그 위에 개뿔도 만나지 않을 것이다.
END
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.