实现一个new
Posted mdge
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现一个new相关的知识,希望对你有一定的参考价值。
function Dog(name)
this.name = name
this.say = function ()
console.log(‘name = ‘ + this.name)
function Cat(name)
this.name = name
this.say = function ()
console.log(‘name = ‘ + this.name)
function _new(fn, ...arg)
const obj = ; //创建一个新的对象
obj.__proto__ = fn.prototype; //把obj的__proto__指向fn的prototype,实现继承
fn.apply(obj, arg) //改变this的指向
return Object.prototype.toString.call(obj) == ‘[object Object]‘? obj : //返回新的对象obj
//测试1
var dog = _new(Dog,‘aaa‘)
dog.say() //‘name = aaa‘
console.log(dog instanceof Dog) //true
console.log(dog instanceof Cat) //false
//测试2
var cat = _new(Cat, ‘bbb‘);
cat.say() //‘name = bbb‘
console.log(cat instanceof Cat)
以上是关于实现一个new的主要内容,如果未能解决你的问题,请参考以下文章