码迷,mamicode.com
首页 > 编程语言 > 详细

Javascript 模拟 new

时间:2017-05-07 13:04:42      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:str   []   构造   .com   构造函数   create   console   ping   java   

一、开始

同样我们先来看看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

标签:str   []   构造   .com   构造函数   create   console   ping   java   

原文地址:http://www.cnblogs.com/lastnigtic/p/6820190.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!