首页 > 代码库 > Javascript 模拟 new
Javascript 模拟 new
一、开始
同样我们先来看看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();
其实很多东西只要是知道了干什么的,再去实现起来就很有思路了
Javascript 模拟 new
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。