用对象键在一行中声明和分配函数对象
Declaring and assigning a function object with object keys in one line
是否可以将下面的语句压缩成一条语句?
var foo = function () { return; };
foo.bar = 'baz';
最接近的一次是:
var foo = Object.create(function(){return;}, { bar : { value: 'baz' } });
您可以使用一个函数来完成此操作,该函数将属性从一个对象复制到另一个对象并返回修改后的对象。这是大多数通用JS库的一个特性,它通常被称为"extend"。
强调:
var foo = _.extend( function () { return; }, { bar: 'baz' } );
jQuery: var foo = $.extend( function () { return; }, { bar: 'baz' } );
原型:var foo = Object.extend( function () { return; }, { bar: 'baz' } );
角:
var foo = angular.extend( function () { return; }, { bar: 'baz' } );
Ext: var foo = Ext.apply( function () { return; }, { bar: 'baz' } );
相当简单:
var foo = Object.defineProperty(function() { }, 'bar', {value: 'baz'});
利用Object.defineProperty
既接受函数作为其第一个参数,又返回该对象的事实。
或者如果你碰巧有一个变量x
:
var foo = (x = function () { }, x.bar = 'baz', x);
荒谬的黑客
我对这个问题的原始回答提出了以下建议,这可能被认为是一个"单一陈述":
var foo = (function() { var f = function () {} ; f.bar = 'baz'; return f; })();
或者,如果您考虑以下"单个语句":
for (var foo=function() {}; !foo.bar; foo.bar = 'baz') { }
或者,按照@cookiemonster的精神:
var foo = (foo=function(){}) && (foo.bar = 'baz') && foo;
相关文章:
- JavaScript对象声明后的逗号是什么意思
- ESLint 无多空格允许在对象声明中
- 在对象声明中重写 toString 原型
- 如何将对象及其子对象声明为常量
- javascript对象声明没有按我希望的方式工作
- 或JavaScript对象声明的符号
- 正在将Jquery对象声明为变量
- 如何使用对象声明启动特定方法
- 为什么这个对象声明在node.js中有效,以及如何声明静态变量
- Javascript中的对象声明
- 不能理解JQuery扩展对象声明背后的一些语法
- 从对象声明中访问变量
- 对象声明中的访问变量
- 这两个JavaScript对象声明的区别
- Javascript对象声明中的语法错误
- 两个Date.now()在一个对象声明中
- 在JS中,如何为一个对象声明一个值,并让所有的父键自动创建
- 带有对象声明和IN保留字的Javascript for()循环-只是想澄清一下
- 创建一个JavaScript原型是一种好做法吗?方法进行自定义对象声明,如果是,如何进行
- JavaScript对象声明有问题