JavaScript原型及原型链

JavaScript原型及原型链

区分一下,一般对象和函数对象。函数对象才有prototype属性。

函数对象:

function f1(){};
var f2 = function(){};
var f3 = new Function('str','console.log(str)');

一般对象:

var o3 = new f1();
var o1 = {};
var o2 =new Object();

简朴的说,通常经由过程 new Function() 建立的对象都是函数对象,其他的都是一般对象。
原型的作用就是继续。

原型链:
JS在建立对象(不论是一般对象照样函数对象)的时刻,都有一个叫做__proto__的内置属性,用于指向建立它的函数对象的原型对象prototype。
原型对象prototype中都有个预定义的constructor属性,用来引用它的函数对象。

person.prototype. constructor === person  //true
Function.prototype.constructor === Function //true
Object.prototype.constructor === Object //true

总结一下:

var animal = function(){};
var dog = function(){};
animal.price = 2000;//
dog.prototype = animal;
var tidy = new dog();
console.log(dog. price)  //undefined
console.log(tidy.price)  // 2000

事实证明,真正起作用的不是prototype ,而是__proto__。

    原文作者:dada86
    原文地址: https://segmentfault.com/a/1190000004131108
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞