JavaScript对象规则
我目前正在研究javascript函数和对象,但有点混乱 我已经创建了一个对象,并在窗口中调用了它的方法JavaScript对象规则,javascript,function,object,Javascript,Function,Object,我目前正在研究javascript函数和对象,但有点混乱 我已经创建了一个对象,并在窗口中调用了它的方法 obj.something(),它会给我结果,但当我在控制台中编写相同的代码时,比如console.log(obj.something()),它在控制台中提供了未定义的 所以,我的问题显然是为什么&如何 var obj={ 价值:1, 增量:函数(){ 该值为1 //还这个 }, 加:功能(五){ 这个值+=v //还这个 }, 函数(){ console.log(this.value);
obj.something()代码>,它会给我结果,但当我在控制台中编写相同的代码时,比如console.log(obj.something())代码>,它在控制台中提供了未定义的
所以,我的问题显然是为什么&如何
var obj={
价值:1,
增量:函数(){
该值为1
//还这个
},
加:功能(五){
这个值+=v
//还这个
},
函数(){
console.log(this.value);
//还这个
}
};
obj.shout();
console.log(obj.shout())
未定义
是不带返回的函数的默认返回值
来自以下的MDN文档:
在函数中调用return
语句时,此函数的执行将停止。如果指定,将向函数调用方返回给定值。如果省略表达式,则返回未定义的
undefined
是不带return
的函数的默认返回值
来自以下的MDN文档:
在函数中调用return
语句时,此函数的执行将停止。如果指定,将向函数调用方返回给定值。如果省略表达式,则返回未定义的
您可以使用.call()而不是在函数中使用()来删除“undefined”的显示,而无需添加“return”
var obj={
价值:1,
增量:函数(){
该值为1
//还这个
},
加:功能(五){
这个值+=v
//还这个
},
函数(){
控制台信息(“第14行”);
console.log(this.value);
控制台信息(“第16行”);
//返回;
}
};
var objectShootResult=obj.shout;
控制台信息(“第21行”);
objectShootResult.call(obj);
控制台信息(“第22行”)代码>您可以使用.call()而不是在函数中使用()来删除“未定义的”的显示,而无需添加“返回”
var obj={
价值:1,
增量:函数(){
该值为1
//还这个
},
加:功能(五){
这个值+=v
//还这个
},
函数(){
控制台信息(“第14行”);
console.log(this.value);
控制台信息(“第16行”);
//返回;
}
};
var objectShootResult=obj.shout;
控制台信息(“第21行”);
objectShootResult.call(obj);
控制台信息(“第22行”)
undefined
是不带return
的函数的默认返回值undefined
是不带return
的函数的默认返回值。这就是为什么它在console.log(obj.shout())中给出undefined的原因,尽管它在编写代码obj.shout()时给出了一个结果;请在它们之间创建差异,以便我能容易地理解。关键是,函数总是返回一些东西,但它没有被看到。只有在处理该函数的返回值(如console.log
或其他用法)时,才能看到它,但如果只是调用该函数,则不会看到它。如果调用Math.sin(90)
而不将结果赋值,则情况相同。这就是为什么它在console.log(obj.shout())中给出了未定义的结果,尽管它在编写代码obj.shout()时给出了一个结果;请在它们之间创建差异,以便我能容易地理解。关键是,函数总是返回一些东西,但它没有被看到。只有在处理该函数的返回值(如console.log
或其他用法)时,才能看到它,但如果只是调用该函数,则不会看到它。如果调用Math.sin(90)
而不将结果赋值,则情况相同。它被计算过了,但结果不见了。
You hava to return value from function ,Like this
var obj ={
value: 1,
increment: function () {
this.value += 1
// return this
},
add: function (v) {
this.value += v
// return this
},
shout: function () {
return this;
}
};
obj.shout();
console.log(obj.shout());