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__。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。