내가 professional javascript for web developers을 읽고 있어요, 그들은 다음 소개 :자바 스크립트 프로토 타입 논리
이 코드는 작동합니다
var friend = new Person();
Person.prototype.sayHi = function(){
alert("hi");
};
friend.sayHi();
하지만이 코드는하지 않습니다
function Person(){
}
var friend = new Person();
Person.prototype= {
constructor: Person,
name: "Nicholas",
age: 29,
job: "Software Engineer",
sayName: function() {
alert(this.name);
}
};
friend.sayName();
나는 것을 얻을, 두 번째 예제에서 프로토 타입은 friend
변수가 인스턴스화 된 후에 정의되지만이 경우 첫 번째 예제가 작동하는 이유는 무엇입니까?
나는 전문가가 아니지만'property' 객체를 완전히 덮어 쓸 수 있습니까? 난 당신이 개체 선언에 원하는 변수를 작성해야한다고 생각하고'Person.prototype.sayName = function() {}'을 사용하십시오. 나는'prototype'도 여러분이 두 번째 예제에서 완전히 덮어 씀으로써 제거하고있는 다른 여러 Object 관련 것들을 포함하고 있다고 생각하고 있습니다. – Sygmoral
첫 번째 샘플에서는 프로토 타입에 속성을 추가하고 두 번째 샘플에서는 전체 프로토 타입을 재정의합니다. 사례는 비교할 수 없습니다. 그들을 비슷하게 보이게 변경하면 같은 행동을 취할 것입니다 – zerkms