为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript中构造函数new操作符的理解

JavaScript中构造函数new操作符的理解

夏目祐太 2017-04-03 18:38:42
// 先一本正经的创建一个构造函数,其实该函数与普通函数并无区别 var Person = function(name, age) {     this.name = name;     this.age = age;     this.getName = function() {         return this.name;     } }   // 将构造函数以参数形式传入   function New(func) {       // 声明一个中间对象,该对象为最终返回的实例       var res = {};       if (func.prototype !== null) {           // 将实例的原型指向构造函数的原型           res.__proto__ = func.prototype;       }       // ret为构造函数执行的结果,这里通过apply,将构造函数内部的this指向修改为指向res,即为实例对象       var ret = func.apply(res, Array.prototype.slice.call(arguments, 1));       // 当我们在构造函数中明确指定了返回对象时,那么new的执行结果就是该返回对象       if ((typeof ret === "object" || typeof ret === "function") && ret !== null) {           return ret;       }       // 如果没有明确指定返回对象,则默认返回res,这个res就是实例对象       return res;   }   // 通过new声明创建实例,这里的p1,实际接收的正是new中返回的res   var p1 = New(Person, 'tom', 20);   console.log(p1.getName());   // 当然,这里也可以判断出实例的类型了   console.log(p1 instanceof Person); // true这种思路对吗?
查看完整描述

目前暂无任何回答

  • 0 回答
  • 2 关注
  • 1555 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信