我们可以在对象本身内执行一个函数吗?请参阅以下代码:
obj = {
name:function(){alert("maizere");}
};
因为obj.name()
也意味着相同,即访问对象并执行该功能。为什么不在对象内部执行,如下所示:
obj = {
name:function(){
alert("maizere");
},
name();
};
从obj = new obj() == { obj() }
开始吧?
当我尝试这个时,我没有成功。这里有什么不对或我错了吗?
答案 0 :(得分:4)
以下表示法:
var obj = {};
被称为“对象文字”。它需要一个键/值对列表,作为对象的属性。
只有那个。
答案 1 :(得分:1)
您尝试的语法没有意义。
如果您希望立即执行某项功能,可以执行以下操作。这可以通过将您的函数转换为表达式而不是声明来实现:
obj={
name: (function(){
alert("maizere");
})()
};
然而,这与:
不一样obj={
name: function(){
alert("maizere");
}
};
obj.name();
因为每个不同函数调用中的this
会有所不同。前this
wll指向全局对象(通常在浏览器中为Window
),而后者this
将指向obj
。
答案 2 :(得分:1)
对象文字不是类,因此根对象没有范围,与window
对象类似。此外,对象文字的语法结构并不意味着这样做。它是异构列表键值对。像这样:
var o = { a : b };
JavaScript没有类。但是,with
语句(很少使用)允许此行为(访问对象上的属性或方法而不指定对象root)。
var obj = { name: function() {} };
with ( obj ) {
name();
}
但是这个结构不应该在代码中使用,因为它会导致问题。但作为对你的问题的回答,它完成了这项工作。
答案 3 :(得分:0)
是的,肯定是错的。
JavaScript对象由名称:值对组成,因此不允许您破坏该模式并执行其他操作。 请查看the details
答案 4 :(得分:0)
如果你想要一个基于类的语言意义上的构造函数,这可能是一个更好的方法:
// "class" definition and constructor
var MyObject = function() {
this.name();
};
// method
MyObject.prototype.name = function() {
alert("maizere");
};
// create an object instance of your "class"
var obj = new MyObject();
请注意,Javascript没有类。但是,该术语有时有助于理解Javascript构造函数的方法。
答案 5 :(得分:0)
JavaScript有几个内置对象,如String,Date,Array等。
对象只是一种特殊的数据,具有属性和方法。
访问对象属性的语法是:
objectName.propertyName
示例:
var message="Hello World!";
var x=message.length;
执行上述代码后,x的值为: 12
注意消息是对象。
这是另一个使用new实例化对象并向其添加属性的示例。
person=new Object();
person.firstname="John";
person.lastname="Doe";
person.age=50;
person.eyecolor="blue";
现在,这是一个类示例:
function HelloWorld(hour)
{
// class "constructor" initializes this.hour field
if (hour)
{
// if the hour parameter has a value, store it as a class field
this.hour = hour;
}
else
{
// if the hour parameter doesn't exist, save the current hour
var date = new Date();
this.hour = date.getHours();
}
// display greeting
this.DisplayGreeting = function()
{
if (this.hour >= 22 || this.hour <= 5)
document.write("Goodnight, world!");
else
document.write("Hello, world!");
}
}
在这个例子中,HelloWorld就是这个类。