将自定义javascript对象属性作为参数传递到要更新的函数中
passing custom javascript object property as parameter in function to update
是否可以将javascript对象的属性传递给函数以更新属性的值?现在我有一个像。。。
element = {
border: {
width:0
}
}
我试图将这个对象的实例传递给一个函数来更新width属性,但它不起作用。类似。。。
var instance = new element();
UpdateWidth(instance.border.width, 50);
我猜在函数内部,它只是获取instance.border.width的值,而不是属性本身。这样做可能吗?谢谢
不能通过引用传递基元值(例如,数字文本、0
)。另一方面,对象可以是——比如存储在border
属性中的对象:
UpdateWidth(instance.border, 50);
当然,这需要UpdateWidth
是这样的:
function UpdateWidth(subject, width) {
subject.width = width;
}
但是,如果函数就这么简单,您可以直接设置width
属性,而不需要传递引用:
instance.border.width = 50;
但是,您不能直接从现有对象创建新实例:
var element = { };
var instance = new element(); // TypeError: object is not a function
您可以在现代浏览器中使用Object.create
(或使用polyfill):
var instance = Object.create(element);
否则,您需要将其声明为构造函数:
function Element() {
this.border = {
width: 0
};
}
var instance = new Element();
您想要的是不可能的。直接访问是最容易通过赋值运算符实现的。
在您的情况下:obj.obj.prop=value;
下面是一些例子,我使用一个函数来创建Object,以更明确地显示与使用JSON表示法相比正在发生的事情。有关无法以您尝试的方式从现有对象实例化对象的更多信息,请参阅Jonathan的回答
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Test</title>
<script language="javascript"type="text/javascript">
function init() {
function e() {
var obj = new Object();
obj.border = new Object();
obj.border.width = 0;
return obj;
}
var x = e();
var y = e();
y.border.width = 12;
document.write(y.border.width);
document.write("<br/>");
document.write(x.border.width);
function UpdateWidth( obj, a ) {
obj.border.width = a;
}
UpdateWidth( y, 50 );
document.write("<br/>");
document.write(y.border.width);
}
window.onload = init;
</script>
</head>
<body>
</body>
</html>
我会将函数附加到对象上,如下所示:
function element() {
this.border: {
width:0
},
this.updateBorderWidth: function (newWidth) {
this.border.width = newWidth;
}
}
然后这样做:
var instance = new element();
instance.updateBorderWidth(50);
但是,我不知道如果您可以直接访问实例属性,为什么这是必要的,除非您希望在更新宽度时发生其他事情。此外,如果您希望在Javascript中创建类和继承,我会考虑以下内容:
http://ejohn.org/blog/simple-javascript-inheritance/
相关文章:
- 在jQuery中:如何在用户展开窗口时更新函数
- Javascript 更新函数
- 创建 Jquery 更新函数
- 自定义绑定到可观察数组,不调用更新函数
- 无法更新函数内的变量
- 补间.js不调用更新函数
- 我在nodejs/mongodb上的更新函数上做错了什么
- 如何在nodejs/mongodb上创建一个更新函数
- Javascript 不按间隔更新函数
- 如何在 D3JS 中创建更新函数
- jQuery-使用不推荐使用的toggle()更新函数
- 使用Jquery更新函数REST
- AngularJS:实时更新函数
- Angular'控制器为'更新函数内部的属性
- 相位:调用更新函数不工作
- 在函数中更新函数参数
- AngularJs的更新函数
- 不能在angular服务中更新函数内部的值
- Javascript更新函数If和Else问题
- WP媒体库-选择不更新行索引的ID更新函数