首页 > 其他 > 详细

构造函数new执行与直接执行的区别

时间:2016-07-01 21:20:47      阅读:111      评论:0      收藏:0      [点我收藏+]
//创建一个Test构造
function Test(){
   // new执行与直接执行 this的不同指向
   this.init();
};
// this 指向 Test
Test.prototype.init = function(){
  console.log(‘this is Test‘);
}
// this 指向 window
function init(){
  console.log(‘this is window‘);
}

//直接执行
var t = Test(); // this is window
var test = new Test(); //this is Test

 

另补充一点:
构造函数返回值的问题
如果一个函数的返回值是引用类型(数组,对象或者函数)的数据,那么这个函数作为构造函数用new运算符执行构造时,运算的结果将被它的返回值取代,这时候,构造函数体内的this值丢失了,取而代之的是被返回的对象;

//创建一个Test构造
function Test(){
   this.a = 10;
   return {}; 
};

console.log( new Test() ); // Object {}


//创建一个Test构造
function Test(){
   this.a = 10;
   return 1; 
};

console.log( new Test() ); // Test {a: 10}

 参考网站:http://www.jb51.net/article/47871.htm

构造函数new执行与直接执行的区别

原文:http://www.cnblogs.com/marunzhou/p/5634181.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!