javascript - OLOO 创造差异?
问题描述
除了第二个 Foo 没有原型链之外,这两个版本的 Foo 之间还有其他区别吗?
typeof 说有两个对象,除此之外,我看不到行为等方面的其他变化,除非我遗漏了一些东西......
var Foo = {
init: function(who) {
this.me = who;
},
identify: function() {
return "I am " + this.me;
}
};
var Bar = Object.create( Foo );
Bar.speak = function() {
alert( "Hello, " + this.identify() + "." );
};
var b1 = Object.create( Bar );
b1.init( "b1" );
var b2 = Object.create( Bar );
b2.init( "b2" );
b1.speak();
b2.speak();
和
var Foo = Object.create( null );
Foo.init = function init(who) {
this.me = who;
};
Foo.identify = function identify() {
return "I am " + this.me;
};
var Bar = Object.create( Foo );
Bar.speak = function() {
console.log( "Hello, " + this.identify() + "." );
};
var b1 = Object.create( Bar );
b1.init( "b1" );
var b2 = Object.create( Bar );
b2.init( "b2" );
b1.speak();
b2.speak();
解决方案
推荐阅读
- jquery - Laravel 连接表和总金额
- three.js - 如何在三个js中链接对象并相对移动它们?
- javascript - 如何在 HTML 表单中创建“添加更多”功能
- python - Python print 语句依赖于它后面的行吗?
- javascript - Excel JavaScript API 中是否存在在更改表名称时触发的事件?
- react-native - 将数据从一个屏幕传递到另一个 React-native
- swift - Ubuntu 上的快速 CryptoKit
- ssas - 如何查看 SSAS 多维数据集无法刷新表的原因
- unity3d - 以与 Unity 相同的方式为 Texture2D 着色
- visual-studio - 如何将立方体向一个方向移动 3 秒,然后在相反方向移动 3 秒,或者