从js中的对象返回一个值
return a value from object in js
假设我在js中有一个简单的对象,其中有一个私有变量:
function test(){
var value=true;
}
现在我想创建一个实例:
var r=new test() //I want to get r === true
如何从中返回值?
如果我写:
function test(){
var value=true;
return value;
}
我有一个测试结果{}。
如果我写:
function test(){
var value=true;
return function(){ return value; }
}
然后我可以得到值,但我必须添加额外的括号:
var r=new test()()//r==true
我不想要括号,所以我尝试将代码更改为:
function test(){
var value=true;
return (function(){ return value; } )();
}
但作为回应,我再次得到测试{}在这种情况下,如何编写退货声明?
我认为您需要执行以下操作:
function test(){
this.value = true;
}
然后
var r=new test();
if (r.value == true) {
//Do something
}
首先,我觉得有必要澄清一个可能的误解:
function test(){
var value=true;
}
不是具有私有变量的对象。它是一个带有局部变量的函数。当您使用new
调用函数时,它会创建一个继承自函数原型的对象,该对象没有属性。如果您正常调用函数,它只执行函数体并返回undefined
(因为您没有返回任何内容)。
解决方案:
你真的需要构造函数吗?我这么问是因为你的例子很简单。显然,不能让函数返回两个值,true
和对象。
因此,您可以在没有new
:的情况下调用函数
function test() {
var value = true;
return value;
}
var r = test();
如果您真的希望r
是true
,那么我认为没有理由将该函数作为构造函数调用。
您之所以得到test {}
作为结果,是因为您使用new
调用了函数。如果您这样做,函数将始终返回一个对象,如果您不显式地这样做(value
是布尔值,而不是对象),它将隐式返回this
(这是一个对象)
因此,如果您真的希望函数内部的r
等于value
,那么就不要用new
调用函数。
如果你需要一个对象,有几种方法:
你可以将值分配给一个属性并访问它,就像PokeHerOne在他的回答中显示的那样,或者添加一个返回该值的函数,就像Papiatis所展示的那样。优点是可以显式地访问值,其他查看代码的人可以了解发生了什么
此外,根据您想要对该值/对象执行的操作,您可以实现valueOf
方法,该方法由各种运算符调用。
例如:
function Test(){
var value = true;
this.valueOf = function() {
return value;
}
}
var t = new Test();
console.log(t); // logs the Test instance
console.log(t == true); // logs `true`
即t
是一个对象,但在各种操作中的行为类似于值true
(value
)。这很强大,但也可能很令人困惑,因为类型转换在某种程度上是隐式的,而且它在JavaScript中并不经常使用。
使用内部定义的方法:
function TestClass(){
var value = true;
this.getValue = function(){
return value;
};
}
var t = new TestClass();
alert(t.getValue()); // true
由于value
被定义为私有,因此无法从外部访问:
alert(t.value) // undefined
- 获取最后一个返回值
- 使用谷歌地图:一个返回undefined的自定义javascript函数
- eval(“{}”) vs eval (“x={}”),一个返回 undefined,而另一个返回 {}
- 如何使用 jQuery 创建一个返回 SQL 结果集的函数
- JavaScriptAJAX调用一个返回XML的PHP
- 在什么情况下,您会使用一个返回另一个函数(Javascript)的函数
- 如何创建一个返回等待EventEmitter的promise的函数
- Angularjs模拟一个返回$http承诺的函数
- 如何编写一个返回单个值的java脚本函数,并将返回的值分配给我们想要的任何变量
- Jasmine-测试一个返回localStorage项的服务
- 创建一个返回函数
- 给定子域中的cookie,您可以编写一个返回代理服务器主机名的javascript函数吗
- 在Javascript中给Number添加一个返回变量
- 如何在angularjs中编写一个返回承诺的异步方法
- HTML4和HTML5 -如果没有导航,我怎么知道是否有一个“返回”状态
- 如何在JavaScript中创建一个返回本地文本文件值的函数?
- 如何声明一个javascript变量并将其值赋给一个返回布尔值的php文件
- 如何在异步测试中测试一个返回承诺的存根
- 从php传递一个返回值给js
- 输入一个返回的可观察对象