不可能在匿名对象中声明方法吗
Is it impossible to declare methods in an anonymous object?
术语匿名对象可能是一个令人困惑的术语,所以请允许我澄清:我所说的匿名对象是指对象的声明,就像定义匿名函数一样。
示例:
someFunction=function(){}
someObject={}
但更具体地说是匿名的,因为它们可以被放置在这样的对象或函数的变量可以被放置的任何地方。最好的(也是直接相关的)例子是Object.create
,现在就像使用window.setTimeout(function(){},ms)
(除了它自己的函数的查询),而你只需要把一个函数放在变量的位置,我希望能够做到这一点:object.Create(some__proto__object,{cake:false})
,在我尝试包括方法之前,它都很好。然后它抛出TypeError:描述符必须是对象
所以我在控制台上做了一些测试,我放了{}
,{cake:"cheesecake",taste:"delicious"}
好,
variable={
cake:"cheesecake",
taste:"celicious",
stateTheCatch:function(){console.log('The cake is a pie!')}
}
它有效,但是
//In practical use:
//Object.create(inheritanceObject,
{
cake:"cheesecake",
taste:"celicious",
stateTheCatch:function(){console.log('The cake is a pie!')}
}//);
已损坏,并且不算作对象。为什么这么糟糕?因为除了使用标识符之外,您还在Object.create
的第二个参数中这样键入它。那么,它为什么不起作用的线索呢?
这是因为您根本没有创建对象。当用作语句时,方括号会创建一个代码块,而不是对象文字。
你可以在任何代码周围加上括号,但作用不大。(变量有函数作用域,所以它甚至不作用域变量。)
{
{
var x = 41;
{
{
x++;
}
}
}
alert (x);
}
如果您使用对象作为值,它会起作用:
function x(y) { y.tateTheCatch(); }
x({
cake:"cheesecake",
taste:"celicious",
tateTheCatch:function(){console.log('The cake is a pie!')}
});
在Javascript中,函数是对象,因此您可以在使用其他值的任何地方使用函数值。它可以作为参数发送,并存储在变量、对象属性和数组中。
相关文章:
- Javascript库对象方法声明
- Javascript:如何声明非全局静态方法
- 处理复杂类型时的声明方法
- 如何:在JavaScript对象中声明的Angular Factory方法
- 声明JavaScript选项对象的正确方法
- 正在使用AngularJS获取集合中的选定元素.声明性方法
- 声明Javascript名称空间的两种方法之间的区别
- jQuery命名空间声明和模块化方法
- 有没有一种方法可以使用函数参数的值来声明变量
- 用javascript在一个对象的两个键上声明两个数组的简洁方法是什么
- 我不明白在变量中声明方法或函数的概念
- Javascript中的变量声明方法
- 不可能在匿名对象中声明方法吗
- 像alert()这样的声明方法是否会覆盖Javascript中内置的alert()方法?
- 在JS中这三种声明方法的方式有什么区别吗?
- 在Javascript中动态声明方法
- 在声明方法时重复函数名
- 在类的外部声明方法
- 使用.protype声明方法的效果
- JavaScript:在对象外声明方法时意外的令牌