Jus*_*ent 3 javascript json namespaces this
// JavaScript JSON
var myCode =
{
message : "Hello World",
helloWorld : function()
{
alert(this.message);
}
};
myCode.helloWorld();
Run Code Online (Sandbox Code Playgroud)
上面的JavaScript代码会提醒'undefined'.
为了使它真正起作用,代码需要如下所示...(注意myCode.message的文字路径)
// JavaScript JSON
var myCode =
{
message : "Hello World",
helloWorld : function()
{
alert(myCode.message);
}
};
myCode.helloWorld();
Run Code Online (Sandbox Code Playgroud)
我的问题是......如果我以这种方式使用json声明函数,是否有一些"相对"方式来访问myCode.message或者是否只能使用文字命名空间路径myCode.message来实现?
你的第一个例子工作,函数this内部的helloWorld值将引用myCode对象本身,因为你调用它myCode.helloWorld();
当您调用作为对象成员的函数时,此对象将被设置为this函数的值.
在这种情况下myCode是基本对象的的myCode.helloWorld参考.
关于this关键字的隐式方式还有两种情况,例如,当您调用未绑定为任何对象属性的函数时,即:
myFunc();
Run Code Online (Sandbox Code Playgroud)
this里面的值myFunc将指向全局对象.
当您使用new运营商时:
var obj = new MyFunc();
Run Code Online (Sandbox Code Playgroud)
this里面的值MyFunc将引用新创建的对象.
function test () {
return this + " World";
}
test.call("Hello"); // "Hello World"
Run Code Online (Sandbox Code Playgroud)
只是注意,这不是JSON,JSON只是一种数据交换格式,其语法与JavaScript Object Literal语法不同,例如:
{ foo: "bar" }
Run Code Online (Sandbox Code Playgroud)
以上是一个有效的JavaScript对象文字,但是无效的JSON,JSON要求将属性标识符包装在引号之间,并且它允许一组有限的数据类型,例如,您不能将函数作为JSON对象的成员.
| 归档时间: |
|
| 查看次数: |
2225 次 |
| 最近记录: |