JS:day13
1. 원형 개체 체인 과 Object. prototype
hasOwnProperty() //
propertyIsEnumerable() //
isPrototypeOf() //
valueOf() //
toString() //
Object.prototype.add = function(value){
return this + value;
};
var book = {
title:"hello world"
};
console.log(book.add(5));
console.log("title".add("end"));
2. 대상 상속 (Object. create)
var person1 = {
name:"Anqi",
sayName:function(){
console.log(this.name);
}
};
var person2 = Object.create(person1,{
name:{
configurable:true,
enumerable:true,
value:"Hello",
writable:true
}
});
person1.sayName();
person2.sayName();
3. 구조 함수 의 계승 (두 가지 방식)
function Rectangle(length,width){
this.length = length;
this.width = width;
}
Rectangle.prototype.getArea = function(){
return this.length * this.width;
};
Rectangle.prototype.toString = function(){
return "[Rectangle" + this.length + "x" + this.width + "]";
};
function Square(size){
this.length = size;
this.width = size;
}
// Square.prototype = new Rectangle();
// Square.prototype.constructor = Square;
//
Square.prototype = Object.create(Rectangle.prototype,{
constructor:{
configurable:true,
enumerable:true,
value:Square,
writable:true
}
});
Square.prototype.toString = function(){
return "[Square" + this.length + "x" + this.width + "]";
};
var rect = new Rectangle(5,10);
var square = new Square(6);
console.log(rect.getArea());
console.log(square.getArea());
console.log(rect.toString());
console.log(square.toString());
[중요 한 2 단 코드!]
Square.prototype = new Rectangle();
Square.prototype.constructor = Square;
Square.prototype = Object.create(Rectangle.prototype,{
constructor:{
configurable:true,
enumerable:true,
value:Square,
writable:true
}
});
3. 구조 함수 의 절취
콜 () 과 apply () 를 사용 하 는 것 이 구조 함수 절취 의 관건 이다.
function Rectangle(length,width){
this.length = length;
this.width = width;
}
Rectangle.prototype.getArea = function(){
return this.length * this.width;
};
Rectangle.prototype.toString = function(){
return "[Rectangle" + this.length + "x" + this.width + "]";
};
function Square(size){
Rectangle.call(this,size,size);
}
Square.prototype = Object.create(Rectangle.prototype,{
constructor:{
configurable:true,
enumerable:true,
value:Square,
writable:true
}
});
Square.prototype.toString = function(){
return "[Square" + this.length + "x" + this.width + "]";
};
var square = new Square(6);
console.log(square.length);
console.log(square.width);
console.log(square.getArea());
4. 부모 클래스 에 접근 하 는 방법
Square.prototype.toString = function(){
var text = Rectangle.prototype.toString.call(this);
return text.replace("Rectangle","Square");
};
이 방법 은 Square. prototype. toString 을 Rectangle. prototype. toString 으로 바 꾸 는 것 이 부모 클래스 에 접근 하 는 유일한 방법 입 니 다.
대상 모드
1. 모듈 모드
모듈 모드 는 개인 데 이 터 를 가 진 단일 대상 을 만 드 는 데 사용 되 는 모드 입 니 다.
var person =(function(){
var age=25;
return{
name:"Anqi",
getAge:function(){
return age;
},
setAge:function(value){
age=value
}
}
})();
person.setAge(20);
console.log(person.getAge())
다음은 변 경 된 노출 모듈 모드 입 니 다.
var person = (function(){
/* */
var age=25;
function getAge(){
return age;
}
function setAge(value){
age=value;
}
return{
/* */
name :"Anqi",
getAge:getAge,
setAge:setAge
}
})();
2. 구조 함수 의 개인 구성원
구조 함수 에서 개인 데 이 터 를 정의 합 니 다.
/* */
function Person(name){
//
var age;
this.getAge = function(){
return age;
};
this.setAge = function(value){
age = value;
};
this.name=name;
}
var anqi = new Person("Anqi");
anqi.setAge(24);
console.log(anqi.getAge())
3. 역할 영역 안전 한 구조 함수
new 연산 자 를 사용 하지 않 고 this 값 을 직접 호출 하면 오류 가 발생 할 수 있 습 니 다.
function Person(name){
this.name = name;
}
Person.prototype.sayName=function(){
console.log(this.name)
};
var Anqi = Person("anqi");
console.log(Anqi instanceof Person); // false
console.log(typeof Anqi); // undefined
이 모드 를 사용 하여 new 의 사용 여부 에 따라 함수 의 행동 을 제어 할 수 있 습 니 다.
function Person(name){
if(this instanceof Person){
this.name = name;
}else{
return new Person(name);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.