您的位置:首页 > Web前端 > JavaScript

Javascript 模拟 new

2017-05-07 11:10 211 查看
一、开始

同样我们先来看看new操作符为我们做了什么事情:

function Person(name, sex){
this.hobby = 'shopping';
this.name = name;
this.sex = sex;
this.sayName = function(){
console.log(this.name)
};
}
Person.weight = '60kg';
Person.prototype.friend = 'rose';
var person = new Person('jack','age');
person.sayName();


输出是:



可以看到原型链的对象被继承下来了,定义在方法外的属性没有被继承下了,返回了一个新对象,可以传递参数

二、实现模拟

我们要做的是,返回一个新对象,吧原型链指向构造函数,传递参数

function Create(){
var obj = {};
var Constructor = [].shift.call(arguments);
obj.__proto__ = Constructor.prototype;
Constructor.apply(obj,arguments);
return obj;
};
var person = Create(Person,'jack','age');
person.sayName();


其实很多东西只要是知道了干什么的,再去实现起来就很有思路了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: