JavaScript对象规则

JavaScript对象规则,javascript,function,object,Javascript,Function,Object,我目前正在研究javascript函数和对象,但有点混乱 我已经创建了一个对象,并在窗口中调用了它的方法 obj.something(),它会给我结果,但当我在控制台中编写相同的代码时,比如console.log(obj.something()),它在控制台中提供了未定义的 所以,我的问题显然是为什么&如何 var obj={ 价值:1, 增量:函数(){ 该值为1 //还这个 }, 加:功能(五){ 这个值+=v //还这个 }, 函数(){ console.log(this.value);

我目前正在研究javascript函数和对象,但有点混乱

我已经创建了一个对象,并在窗口中调用了它的方法
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());