prototype - 关于JavaScript的原型继承,求验证图片是否正确
高洛峰
高洛峰 2017-04-10 15:10:50
0
4
208

首先明确:

1、任何对象都有属性[[Prototype]];

2、只有函数有属性prototype。

代码如下:

// 父类构造函数
function Pet(name,sound){
    var name = name;
    this.sound = "Pet says " + sound;
    this.getName = function(){
        console.log(name);
    };
}
// 父类原型
Pet.prototype.voice = function(){
    console.log(this.sound);
}

// 子类
function Dog(sound){            
    this.sound = "Dog syas " + sound;
}

// 继承
Dog.prototype = new Pet("pet","ohooo");
Dog.prototype.constructor = Dog;

// 继承验证
var dog = new Dog("wangwang");
dog.voice();//Dog syas wangwang
dog.getName();//pet
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(4)
迷茫

最左侧的Function应该改成Function.prototype 或是 Function.[[Prototype]] Function 比较特殊,它的这两个属性指向同一个对象

大家讲道理

正确(凑字数)

小葫芦

最左侧的Function应该改成Function.prototype 或是 Function.[[Prototype]] Function 比较特殊,它的这两个属性指向同一个对象 -- @zonxin

同理,右边的 Object 应该是 Object.prototype

图片来源


jsfunction Pet(){}
var p = new Pet();

p.__proto__ === Pet.prototype;
Pet.__proto__ === Function.prototype;
Pet.prototye.__proto__ === Object.prototype
Function.__proto__ === Function.prototype;
Object.__proto__ === Function.prototype;
Function.prototype.__proto__ === Object.prototype


Object.prototype.isPrototypeOf(Function.prototype);





Function.prototype.name === 'Empty'
Peter_Zhu

修正一个小错误,对象也可以有 prototype属性哈

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!