원형 원형 체인, 속성의 확장
원형 및 원형 체인
원형
는 은식 원형 프로토 속성을 가지고 있다
는 은식 원형 프로토 속성을 가지고 있다(맞다)
는 현식 원형prototype 속성을 가지고 있다(틀림)
는 현식 원형prototype 속성을 가지고 있다(맞다)
의prototype
는 빈 Object 대상을 가리킨다(틀렸다)
의prototype
__proto__
는 Object의prototype(맞아)위수조를 진수조로 전환 & 변수가 진수조인지 아닌지 어떻게 판단합니까
obj instanceof Array
는 수조 여부를 판단할 수 있다 var arr = {length:3,0:"a",1:"b",2:"c"};
arr.push('d');//
var arr2 = Array.prototype.slice.call(arr);
arr2.push("d")
console.log(arr2)
기본값
map()
방법으로 새 그룹을 만들었는데 그 결과는 이 그룹의 모든 요소가 제공된 함수를 호출한 후에 되돌아오는 결과입니다.join()
방법은 수조(또는 하나의 클래스 수조 대상)의 모든 요소를 문자열에 연결합니다. function test(arr,fn){
arr =arr||Array.prototype;
fn =fn||Function.prototype;
return arr.map(fn).join(" ");
}
console.log(test());
==의 사용 규칙
// [""] valueof [""]
[""].tostring() ""
number() 0
console.log([""]==false)//true
//
Array.prototype.valueof = function(){
return 1;
}
console.log([""]==flase)//false
원형 체인의 계승
html()
on()
// new Element()---> dom
function Element(id){
this.ele = document.getElementById(id);
}
Element.prototype.innerText= function(val){
var ele = this.ele;
if(val){
ele.innerText = val;
return this;//
}else{
return ele.innerText;
}
}
Element.prototype.on = function(val,fn){
var ele = this.ele;
if(ele.addEventListener){
ele.addEventListener(val,fn);
return this
}
}
var textNode = new Element("test");
textNode.innerText("text")//
textNode.innerText("text").innerText()//
console.log(textNode.innerText("text").innerText())//
textNode.on("click",function(){
alert(1);
}).innerText('text')
종합 면접 문제
//
//
//
//this
//
//
function getName() {
alert (5);
}
function Foo() {
getName = function () { alert (1); };
return this;
}
Foo.getName = function () {
alert (2);
};
Foo.prototype.getName = function () {
alert (3);
};
var getName = function () {
alert (4);
};
Foo.getName(); //2
getName();//4
Foo().getName(); //1
getName(); //1
new Foo.getName(); //2
new Foo().getName()//3
원형 & 원형 체인
Object.prototype.__proto__===>null
Function.__proto__ === Function.prototype
Object.__proto__ === Function.prototype
Function.prototype.__proto__ === Object.prototype
Object.prototype.__proto__=== null
javascript의 속성
변수 찾기
속성 설명자(메타 속성)
Object.getOwnPropertyDescriptor(obj,"name")
첫 번째 매개 변수: 대응하는 대상;두 번째 매개 변수: 대응하는 대상의 속성writable
속성을 수정할 수 있는지 여부를 결정합니다.
엄격한 모드에서 오류 보고configurable
로 속성 구성 가능 여부 결정 var damu={};
Object.defineProperty(damu,"age",{
value:18,
writable:true
})
Object.defineProperty(damu,"age",{
value:19,
configurable:true//
})
console.log(damu)//age:19
var a=3;
b=4;
console.log(Object.getOwnPropertyDescriptor(window,"a"))
console.log(Object.getOwnPropertyDescriptor(window,"b"))
delete a;//a configurable:false
delete b;//b configurable:true
console.log(a)//3
console.log(b)//
enumerable
매거가능: 대상의 for in 순환에 나타날 수 있는지( )obj.propertyIsEnumerable("a")
( )Object.keys(obj)
( )Object.getOwnPropertyNames(obj)
var damu={};
Object.defineProperty(damu,"a",{
enumerable:false
})
Object.defineProperty(damu,"b",{
enumerable:true
})
Object.defineProperty(damu,"c",{
enumerable:true
})
Object.defineProperty(damu,"d",{
enumerable:true
})
Object.defineProperty(damu,"e",{
enumerable:false
})
Object.defineProperty(damu,"f",{
enumerable:false
})
for(item in damu){
console.log(item);// b,c,d
}
for(item in damu){
if(damu.hasOwnProperty(item)){
console.log(item);
}
}
Object.defineProperty(Object.prototype,"text",{
value:"text"
enumerable:true
})
console.log(damu.text)//text
console.log(damu.propertyIsEnumerable("f"))//false
console.log(damu.propertyIsEnumerable("text"))//false
console.log(Object.keys(damu));// ( )
console.log(Object.getOwnPropertyNames)// ( )
객체 속성을 정의하는 두 가지 방법
(개체를 쉽게 정의할 수 있음)true
var damu={
wife:"zdy"
}
damu.wife="fbb";
console.log(damu);
false
var damu={}
Object.defineProperty(damu,"age",{
value:18
})
console.log(damu);
대상의 불변성
객체의 상수 속성
writable
와 configurable
를false객체 확장 금지
Object.preventExtensions(obj)
단일 객체 수신밀봉 대상
Object.seal(obj)
대상을 밀봉빙결 대상
Object.freeze(obj)
대상을 밀봉객체 깊이 동결
for in
계속 순환 var obj={
hoddy:{
hoddy1:"a",
hoddy2:"b",
hoddy3:"c",
hoddy4:"d",
hoddy5:"e"
}
};
Object.freeze(obj);
obj.hoddy.hoddy1 = "g"//hoddy1
console.log(obj)
for(item in obj){
Object.freeze(obj[item]);
}
존재성 검사
"a" in obj
obj.hasOwnProperty("a")
액세스 설명자
set
나get
또는 둘 다 때때로 이 속성은
value writable
특성을 무시합니다.대신 set과 get 함수입니다.value writable
와 set get
는 한 조총결산
속성 찾기
속성 설정
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.