Javascript 1.9.3 / ECMAScript5引入了Object.create
DouglasCrockford等人提倡很长时间的技术。如何new
在下面的代码中替换为Object.create
?
var UserA = function(nameParam) {
this.id = MY_GLOBAL.nextId();
this.name = nameParam;
}
UserA.prototype.sayHello = function() {
console.log('Hello '+ this.name);
}
var bob = new UserA('bob');
bob.sayHello();
(假设MY_GLOBAL.nextId
存在)。
我能想到的最好的是:
var userB = {
init: function(nameParam) {
this.id = MY_GLOBAL.nextId();
this.name = nameParam;
},
sayHello: function() {
console.log('Hello '+ this.name);
}
};
var bob = Object.create(userB);
bob.init('Bob');
bob.sayHello();
似乎没有任何优势,所以我想我没有。我可能太新古典了。我应该如何使用Object.create
来创建用户“ bob”?
仅具有一个继承级别,您的示例可能无法让您看到的真正好处Object.create
。
通过此方法,您可以轻松实现 差异继承 ,其中对象可以直接从其他对象继承。
在您的userB
示例中,我认为您的init
方法不应该是公共的,甚至不存在,如果您在现有对象实例上再次调用此方法,则id
andname
属性将发生变化。
Object.create
使您可以使用第二个参数来初始化对象属性,例如:
var userB = {
sayHello: function() {
console.log('Hello '+ this.name);
}
};
var bob = Object.create(userB, {
'id' : {
value: MY_GLOBAL.nextId(),
enumerable:true // writable:false, configurable(deletable):false by default
},
'name': {
value: 'Bob',
enumerable: true
}
});
如您所见,可以Object.create
使用与Object.defineProperties
和Object.defineProperty
方法相似的语法,使用对象常量在属性的第二个参数上初始化属性。
它可以让你设置属性的属性(enumerable
,writable
,或configurable
),它可以是非常有用的。
问题内容: 每当我读到关于使用Scala的作者通常提的是演员,而应使用(此举例)。虽然我大致了解了Actor的工作原理,但我真的很想看到一个Actor的示例,该示例被用来在一段代码中替换Java的方法修饰符(这意味着它的Scala等效项- 块)。例如,修改数据结构的内部将很高兴。 这是对Actor的很好利用,还是我被误导了? 问题答案: Actor保证一次只处理一条消息,这样就不会有两个线程访问任
我是说替换 只要 在班上名列前茅。对我有用。 请给出你的建议。 使用SpringJunit4ClassRunner.class而不是MockitoJunitRunner.class
问题内容: 到目前为止,我一直在使用: 谢谢 编辑:我为可能遇到此页面的任何人提供了一种解决方案,以演示如何使用POST而不是GET。如果您不熟悉AJAX,建议您首先使用GET方法向本教程http://www.w3schools.com/PHP/php_ajax_php.asp推荐。 解- javascript: 的PHP: 由于有关使用POST和GET的原因-请参见注释。 问题答案: 您显示的查
问题内容: 我有看起来像这样的XML: 我想使用JAXB进行阅读。 我知道我能做 如果XML看起来像 ,但是我对上面的XML布局怎么办? 问题答案: 注意: 我是EclipseLink JAXB(MOXy)的负责人,并且是JAXB 2.X(JSR-222)专家组的成员。 您可以在此用例中使用MOXy的扩展名:
我试图导入的应用程序中的gradle版本与JDK11不兼容,而JDK11正是android studio用作其嵌入式JDK的。我的机器上有JDK8。我已经尝试进入项目结构来更改JDK8位置的路径,但是如果我尝试更改它,就会出现错误。它说我必须选择一个有效的JDK11目录。如何让android studio使用JDK 8?错误截图
问题内容: 我不确定这是否可能。但是我想知道是否有人知道如何使超链接传递一些变量并使用POST(如表单)而不是GET。 问题答案: 您使用隐藏的输入创建表单,这些输入包含要发布的值,将表单的 操作 设置为目标url,并将表单方法设置为 post 。然后,当您单击链接时,触发提交表单的JS函数。 有关示例,请参见此处。本示例使用纯JavaScript,没有jQuery-如果您不想安装比现有更多的东西