原型
定义
- 每一个对象都有原型
- 原型仍然是一个对象
- 模拟实现面向对象的继承性 求原型 var list=[]; console.log(Array.prototype); console.log(list.proto); 给所有数字的原型添加方法 Number.prototype.add=function(number){ return number+this; } var num=100; console.log(num.add(500));
原型链
- 对象的原型还有原型
-
对象除了可以使用自有属性还可以继承原型上的属性
var arr=[]; console.log(arr); //Array(0) console.log(arr.__proto__); //Array(0) console.log(arr.__proto__.__proto__); //object var obj={}; console.log(obj); //object console.log(obj.__proto__); //object function User(){ } var u=new User(); console.log(u); //user console.log(u.__proto__); //object console.log(u.__proto__.__proto__); //object
-
判断属性是自有的还是原型继承的
console.log(arr.hasOwnProperty("length")); //true console.log(arr.hasOwnProperty("push")); //false
-
创建对象并指定对象的类型(ECMA5)
var o=Object.create(arr); console.log(o); //Array console.log(o.constructor); //返回对象类型 函数 console.log(o.__proto__); //Array(0)