【javascript笔记】js构造器

原出处 请点击: click me

今天无意看到了一个题目,谁知被难住了
look at this

var fun = function(){
    this.name = 'peter';
    return {
    name: 'jack'
    };
}

var p = new fun();
//请问p.name是:

第二题

var fun = function(){
    this.name = 'peter';
    return 'jack';    
    }
var p = new fun();
//请问p.name是:

每个函数都有返回值,如果使用了return语句,则返回return后跟的值,如果没有使用return,则默认返回undefined.
特别的,如果这个函数是构造函数,则默认返回this对象,如果构造函数内使用了return语句,并且return后跟的是一个对象,则这个构造函数返回的是这个对象,这里指代的对象是toString.call(obj)==’[object Object]’ . 否则返回this.
所以1题中的p = {name: ‘jack’},而2题中的p = {name: ‘peter’}.

总结: 构造器(以 new FuncName形式) 得到的结果必然是个object. 请看这里mdn关于构造器的返回值介绍:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/this#构造函数中的_this

转载于:https://www.cnblogs.com/dongguapifly/p/10627135.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值