이 기사의 예에서는 JavaScript 프로토타입 모드의 사용법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
일반적으로 팩토리 패턴과 생성자 패턴의 단점을 이해하고 나면 프로토타입 패턴이 왜 필요한지 알게 됩니다
프로토타입 패턴 i의 정의: 모든 함수에는 특정 유형의 모든 인스턴스가 공유할 수 있는 속성과 메서드를 포함하는 목적을 가진 객체인 프로토타입 속성이 있습니다. 예를 들어 생성자 모델의 sayInformation() 메소드에서 두 개의 인스턴스가 선언되면 sayInformation 메소드를 두 번 생성해야 하는데 굳이 두 번 선언할 필요가 없다는 것이 프로토타입 패턴이 나타나는 이유이다(니마, 그 블로그들). 인터넷상에는 모두 말이 안되는 것인지, 아니면 책을 읽을 때 이해하기 쉬운 것인지), sayInformation()을 프로토타입 모드로 선언한 후 인스턴스를 공유하므로 두 번 선언할 필요가 없습니다
function Person(){} Person.prototype.name="jack"; Person.prototype.age=10; Person.prototype.sayInformation=function() { console.log("my name is"+this.name+" age is"+this.age); } var person1 = new Person(); person1.sayInformation(); console.info(person1.name); //来自原型的属性name person1.name="Greg"; //修改实例的name属性 console.info(person1.name); //来自实例的属性name delete person1.name ; //来自实例的属性,这里删除的是实例的属性,但是原型的属性依然存在 console.info(person1.name); //来自原型的属性name var person2 = new Person(); person2.sayInformation(); console.info(person1.hasOwnProperty("name")); //hasOwnProperty检查属性是属于实例还是原型中,如果是实例中就返回true console.info(person1.name==person2.name); console.info(person1.sayInformation==person2.sayInformation); console.info(person1.constructor); //指向person1的构造函数 //原型更加简便的写法 function Person2(){} Person2.prototype={ name:"jack", age:29, sayInformationfunction:function() { console.log("my name is"+this.name+" age is"+this.age); } }
이 기사가 모든 사람의 JavaScript 프로그래밍 설계에 도움이 되기를 바랍니다.