原型链类
问题:
- 创建对象有几种方法
- 原型、构造函数、实例、原型链
instanceof
的原理new
的原理
创建对象有几种方法
// 第一种
var obj = {name: 'z'}
var obj2 = new Object({name: 'z'})
// 第二种
var Foo = function(){ this.name = 'z' }
var obj2 = new Foo()
// 第三种
var obj = {name: 'z'}
var obj2 = Object.create(obj)
构造函数、实例、原型链
instanceof
的原理
new
的原理
var new2 = function(func){
var o = Object.create(func.prototype)
var k = func.call(o)
if(typeof k === 'object'){
// 如果func返回的是一个对象,则返回这个对象
return k
} else {
// 反之,则返回 o
return o
}
}