js 참조 유형 구조 함수 인 스 턴 스 참조 유형 방법 대상 방법 원형 에 대한 개술

우리 가 js 를 사용 할 때 흔히 스스로 속성 과 방법 을 특정한 대상 에 밀봉 하여 하나의 도구 로 서 우리 의 코드 를 최적화 시 켜 야 한다. 또한 우 리 는 함수 구조 방법 을 통 해 특정한 대상 을 공장 화 할 수 있다.
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                         

좋은 웹페이지 즐겨찾기