먼저 간단한 생성자+프로토 타입 객체의 미니 프로그램을 갖추겠습니다.
함수 createobj (uname, uage) {this.username = uname; userage = uage;} createobj.username;} showuserage = function () {return this. }이 프로그램에는 문제가 없지만 각 방법 은 프로토 타입 객체를 문자 그대로 사용합니다 :
createobj.prototype = {showuserage : replay this.userage;}, showusername : return this.username ( 'ghostwu', 22); );그러나이 프로토 타입 객체의 쓰기는 CreateOBJ의 기본 프로토 타입 객체에 속합니다.
다시 쓰기 전에 생성자는 CreateObj를 가리 킵니다
함수 createobj (uname, uage) {this.username = uname; userage = uage;} createobj.username;} showuserage = function () {return this. } console.log (createobj.prototype.constructor === createobj);재 작성 후 건설자는 객체를 가리 킵니다
createobj.prototype = {showuserage : return this.userage;}, showusername : return this.username; .constructor === 객체);따라서 건설자는 개체를 정확하게 식별 할 수 없습니다.
우리가 이전에 쓴 절차는 기본적으로 프로토 타입 객체 (프로토 타입)에서 확장 된 다음 인스턴스화 된 객체를보고 먼저 객체를 제도화 한 다음 프로토 타입에서 기능을 확장합니다.
인스턴스 객체가 정상적으로 확장을 호출 할 수 있습니까?
함수 createobj (uname, uage) {this.username = uname; var obj1 = new createobj ( 'ghostwu', 22); } console.log (obj1.showusername ());정상적으로 호출 될 수 있지만 프로토 타입 객체를 다시 작성하면 호출되지 않습니다.
함수 createobj (uname, uage) {this.username = uname; var obj1 = new createobj ( 'ghostwu', 22); ;프로토 타입 객체를 다시 작성한 후에는 동시에 다시 쓰기 전에 발생합니다. 참조 유형의 값, 다른 모든 인스턴스는 변경 후 결과를 수신합니다.
createobj () {} createobj.prototype = {name : 'ghostwu', 기술 : [ 'php', 'javaScript', 'linux'}; Python '); var obj2 = createobj ();프로토 타입의 공유 기능은 배열과 같은 일부 내장 객체에 대한 일부 방법을 확장하는 데 편리 할 수 있습니다.
array.prototype.unique = function () {var res = []; = -1) {res.push (이 [i]);}} return res;} var anrr = [10, 20, 30, 30, 20, 40, 20]; // 10, 20, 30, 40그러나 내장 된 객체의 방법을 대표적으로 확장하지 마십시오.
위는이 기사의 모든 내용입니다.