javascript的对象问题
object issues of javascript
我构造了一个函数,定义为
var Func1 = function()
{
return {
alert: function() { alert( "Lady Gaga" ); }
};
};
我将Func1()
赋值给一个变量,像这样:
var func1 = Func1();
我发现了一些对我来说没有意义的东西,Func1()
为func1创建了一个对象,尽管我没有把new
放在它的前面。
对象不是只能由new
创建吗?
当上面的表达式被执行时发生了什么?
JavaScript不需要new关键字。上面的代码将返回值赋给新创建的func1变量。
当你编写一个javascript文字对象(类似json)时,它相当于用new操作符创建一个新对象并分配其属性。
var a = { test: 123, caca: 'pipi' };
与
相同var a = new Object();
a.test = 123;
a.caca = 'pipi';
看看您从Func1
返回的内容:
return {
alert: function() { alert( "Lady Gaga" ); }
};
返回一个对象,该对象被赋值给func1
。因此,func1 = Func1();
简单地调用Func1
,并将结果赋值给func1
。
你的函数正在创建一个对象:
{
alert: function() { alert( "Lady Gaga" ); }
};
使用该符号,就不需要使用new
操作符。
The()实际执行函数,返回一个带有方法的对象(方法是函数类型的属性)。
在JS中,你不显式调用new
来创建新对象:
var song = {
name: "Entrenched",
artist: "Morbid Angel"
};
song.artist = "Bolt Thrower";
这将创建一个具有属性name
和artist
的对象。
与函数一起使用的new
关键字是创建对象的一种方法,但不是唯一的方法。这意味着将使用作为构造函数调用的指定函数创建一个新对象——在构造函数中,this
关键字将引用新对象,并返回新对象。如果不使用new
关键字调用同一函数,则不会创建对象。
对象字面语法(例如,var x = { };
或return { };
)是创建对象的另一种方式。
相关文章:
- JavaScript代码问题:我正在将对象转换为数组
- jquery$(this)对象缺少问题
- JavaScript对象继承问题
- 在对象中添加方法时出现问题
- 基本对象/原型语法问题
- Javascript对象文字,POST问题
- 使用Javascript对象为具有两个背景图像的DIV设置样式时出现问题
- 使用.map解析JSON对象时出现问题
- 类中对象的奇怪问题(John Resig简单继承)
- 访问Javascript对象-Node.js的作用域问题
- JavaScript对象中存在数组的问题
- 递归Javascript对象是否会导致任何问题(内存泄漏)
- JavaScript—父类和子类/对象的此问题
- 我该如何解决这个问题;参考网格”;在JavaScript中完成的对象数
- jQuery拖动到相对位置的可排序列表中时出现可拖动辅助对象位置问题
- 尝试将变量传递到对象中时的作用域问题'的方法构造函数
- 创建jQuery对象时出现问题
- 面向对象,控制器问题,初学者Javascript
- 从 JSON 对象获取数据时出现问题
- Rails的问题,haml + javascript在字段对象的模糊