javascript - 为什么var obj = {}创建对象的方法里面不能用this.xxx来声明属性 ?

查看:384
本文介绍了javascript - 为什么var obj = {}创建对象的方法里面不能用this.xxx来声明属性 ?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

为什么var obj = {}创建对象的方法里面不能用this.xxx来声明属性 ?

如:

var  person = {
   this.name = '背锅侠';
}

就会报错.看了下它的构造器也是Object啊.会什么会有这样.另外问下.json和对象有啥区别?

解决方案

this的指向是未来不确定的调用者,跟作用域有关。谁调用函数,函数内部的this就指向谁。

function Person (name) {
    this._name = name;
}
var p1 = new Person('sarah');
var p2 = new Person('tom');

以上使用 new 关键字调用 Person()函数,并传入一个字符串'sarah',作为name的值。此时,函数内部 this 的指向就是p1。同理,另一个就指向p2。如果直接调用 Person('sarah') 方法,由于 Person()的作用域是全局作用域,那么内部this就会指向window.

也就是说,this就是个替代品,指向的未来可能涉及的对象。它是不确定的。内部定义的属性指向也会随之变化。

但是像题主所采用的对象字面量形式,属性name的指向是确定的,它就是属于person。题主定义的 person 对象就等于我这里的p1。

另外,如楼上所说,json就是一种数据格式啦。方便前后台传输数据。

不知道说清楚没。。。新手作答。

这篇关于javascript - 为什么var obj = {}创建对象的方法里面不能用this.xxx来声明属性 ?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆