javascript - 为什么var obj = {}创建对象的方法里面不能用this.xxx来声明属性 ?
问题描述
为什么var obj = {}创建对象的方法里面不能用this.xxx来声明属性 ?
如:
var person = { this.name = ’背锅侠’;}
就会报错.看了下它的构造器也是Object啊.会什么会有这样.另外问下.json和对象有啥区别?
问题解答
回答1: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就是一种数据格式啦。方便前后台传输数据。
不知道说清楚没。。。新手作答。
回答2:对象字面量创建对象不是这么写的吧右面的部份明显是JSON 格式,只接受Key-Value 的形式
JSON和对象的区别 举个栗子
var obj ={ 'you' : 'a good boy' }右面的部分就是你提到的JSON 不管是写到.json 里 还是.js 里都一样其实就是一种数据格式 就长成这样子
至于对象 万物都是对象嘛 对象是个比较抽象的说法
构造器都是.json ? 对啊 都是一种数据格式嘛
回答3:第一个问题你得去问Brendan Eich。 问问他为啥当初JavaScript要这么设计。
至于第二个问题,JSON是一种数据格式,而对象……就假定你说的是JavaScript吧,对象是JavaScript的一种数据类型。
相关文章:
1. javascript - perfect-scrollbar 插件的使用2. javascript - js怎么实现jq的addclass,removeclass,例如本来是 class="aa",要变成class="aa bb"3. javascript - mongodb 引用 删除数据时无法删除引用4. 关于Python的服务器客户端交互问题5. linux - 升级到Python3.6后GDB无法正常运行?6. python相关问题求解决,有偿7. 想练支付宝对接和微信支付对接开发(Java),好像个人不可以,怎么弄个企业的8. javascript - 求解答,koa-bodyparser获取到的参数是空对象,为什么?????9. html5 - ajax post请求后如何渲染到页面上10. html5和Flash对抗是什么情况?
![想练支付宝对接和微信支付对接开发(Java),好像个人不可以,怎么弄个企业的](http://www.haobala.com/attached/image/15.jpg)