js 참조 유형 구조 함수 인 스 턴 스 참조 유형 방법 대상 방법 원형 에 대한 개술
3452 단어 prototypehasOwnProperty
function getPerson(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
#
this.getInfo = function(explode) {
return this.name + explode + this.age + explode + this.sex;
}
}
위의 함 수 는 하나의 함수 대상 구조 기로 서 하나의 대상 을 생 성 할 수 있 습 니 다. 그러나 여기 서 주의해 야 합 니 다. 우리 가 호출 할 때 반드시 new 가 있어 야 새로운 대상 을 생 성 할 수 있 습 니 다. 함수 처럼 직접 호출 하면 십 만 8000 리 차이 가 납 니 다.
new 구조 함수
# new
var xiaoMing = new getPerson('Xiao ming', 25, 'male');
console.log(xiaoMing);
console.log(xiaoMing.name);
console.log(xiaoMing.age);
console.log(xiaoMing.sex);
console.log(xiaoMing.getInfo('--'));
직접 호출 구조 함수
직접 호출 시 구조 함수 의 this 는 현재 기본 전역 대상 window 를 대표 합 니 다.
var winObj = getPerson('window', '--', 'unkown');
console.log(winObj); // window
네, new 구조 함수 (참조 형식) 를 만 들 때 새로운 대상 인 스 턴 스 가 생 깁 니 다. 함 수 를 직접 호출 할 때 이 기본 값 은 현재 window 입 니 다.
프로 토 타 입 과 hasOwnProperty 에 대해 서 말씀 드 리 겠 습 니 다.
어쨌든 저 는 오랫동안 헷 갈 렸 습 니 다. 주로 평소에 js 의 클래스 (대상 구조 함수, 정확하게 말 하면 인용 유형 이 라 고 합 니 다. Object Date Array String 이런 것들 은 대상 이 아니 라 유형 입 니 다. 대상 을 대상 으로 하 는 클래스 와 비슷 하고 엄 격 히 '인용 유형' 이 라 고 합 니 다) 과 이미지 가 우리 와 접촉 한 프로 그래 밍 언어 중 일부.. 저 는 전단 을 공격 하지 않 습 니 다.그 러 니까 프로 답지 못 한 얘 기 를 했 으 니까 이상 하 게 생각 하지 마 세 요.
여기 서 Date Array Math 를 인용 형식 이 라 고 합 니 다. (호출 할 때 구조 함수 new Date (), new 에서 나 온 대상 인 스 턴 스 입 니 다.
property 는 클래스 에 대한 것 입 니 다.
기 존의 클래스 를 확장 할 수 있 는 실례 화 나 사용자 정의 대상 은 이러한 특성 이 없습니다.
방법
대상 방법: 클래스 의 구조 함수 에서 this. Func = function () {} 으로 이 루어 진 것 은 대상 을 부여 합 니 다.
프로 토 타 입 방법: 클래스 외부 에서 className. prototype. Func = function () {} 을 사용 하여 구현 되 었 습 니 다. 대상 에 게 기 존 형식의 확장 을 부여 합 니 다.
클래스 방법: className. func = function () {} 구현 되 지 않 습 니 다. 대상 에 게 만 접근 할 수 있 기 때문에 확장 할 수 없습니다.
#
getPerson.prototype.getName = function() {
retrun this.name;
}
#
getPerson.getAge = function() {
alert(" , ")
}
var obj = new getPerson("sallency", 25, "male");
console.log(obj.getName());//sallency
console.log(obj.getAge());//error
# prototype
# new
if (!getPerson.prototype.getSex) {
getPerson.property.getSex= function() {
return this.sex;
}
}
Prototype 의 구체 적 인 용법: 확장 형식
# Object
if (!Object.prototype.getMsg) {
// Object.prototype.getMsg == undefined
//typeof Object.prototype.getMsg == 'undefined'
Object.prototype.getMsg = function() {
alert("this is my prototype method: getMsg!");
}
}
# Object ( )
var arr = new Array();
arr.getMsg();
대상 / 원형 방법 과 유형 을 구별 하 는 방법 에 주의 하 세 요.
hasOwnProperty 는 대상 으로 자신 이 어떤 속성 이나 방법 이 있 는 지 판단 한다.
var obj = new getPerson("sallency", 25, "male");
console.log(obj.hasOwnProperty('name')); //true
console.log(obj.hasOwnProperty('age')); //true
console.log(obj.hasOwnProperty('sex')); //true
console.log(obj.hasOwnProperty('getName')); //true
console.log(obj.hasOwnProperty('getAge')); //false
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기능 재검토(프로토타입 아님) 🤥빠른 수정을 위한 몇 가지 참고 사항 사용자 지정 속성이 있는 함수 이것은 대부분의 경우 런타임 바인딩이므로 someKey는 aFunction 또는 aFunction.prototype의 속성이 아닙니다. 접두사 cu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.