Lodash - 使用 _.create() 的价值是什么?
Lodash - What is the value of using _.create()
在 Lodash 库中,与其他更传统的方法相比,使用 _.create()
来处理类和实例的价值是什么?
用于创建的文档
我不认为create()是为了取代现有的JavaScript继承/原型机制。根据我的经验,将一种类型的集合映射到另一种类型时很方便:
function Circle(x, y) {
this.x = x;
this.y = y;
}
function Square(x, y) {
this.x = x;
this.y = y;
}
Square.prototype.coords = function() {
return [ this.x, this.y ];
}
var collection = [
new Circle(1, 1),
new Circle(2, 2),
new Circle(3, 3),
new Circle(4, 4)
];
_(collection)
.map(_.ary(_.partial(_.create, Square.prototype), 1))
.invoke('coords')
.value();
// →
// [
// [ 1, 1 ],
// [ 2, 2 ],
// [ 3, 3 ],
// [ 4, 4 ]
// ]
我认为这是一种方便。在执行在 JS 中实现经典继承模型的常见任务时,它更简洁一些。
本地:
var User = function() {};
User.prototype = Object.create(Person.prototype);
Object.assign(User.prototype, {
constructor: User,
...other stuff
});
与_.create
:
var User = function() {};
User.prototype = _.create(Person.prototype, {
constructor: User,
...other stuff
});
只是少写了一点。
在阅读了一些 lodash 代码后,我看到的最大区别是 Object.create 第二个参数采用 object.defineProperty arg 的格式,即属性描述符,而 _.create 只是从对象复制所有自己或继承的可枚举属性(依赖于 nativeKeysIn)。
它主要简化了经典对象定义。
相关文章:
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 使用AJAX在Rails中提交动态表单的最佳方式是什么
- 使用Modernizr检测移动设备最可靠的方法是什么
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- 使用Angular存储用户以前是否选中过复选框,然后再调用它的最佳方式是什么
- 使用ReactJS和Flux架构从服务器获取数据的正确方法是什么
- 在AngularJS中使用多个主题的最佳方式是什么
- 什么'与Jasmine相比,使用Sinon.js的优势是什么;内置于间谍
- 使用较少代码隐藏和显示选择菜单内容的更好方法是什么?javascript
- 不确定我在PHP AJAX中使用的是什么开发模式
- 存储数据的最佳方式是什么,以便与jquery一起使用
- 当用户允许使用mic Javascript时,事件处理程序是什么
- 使用Javascript,获取元素的方法是什么,基于打开和关闭标记之间的文本
- 使用node.js发送并发ajax请求的限制是什么
- 在d3.json中使用d3.csv组合多个csv文件数据输入的最佳方法是什么
- 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么
- 使用Javascript客户端进行REST基本身份验证的安全缺陷是什么(如果有的话)
- 什么'最合适的数据结构是什么?(使用一个有间隙的数组是否存在缺点或注意事项?)
- google的优势是什么?使用临时构造函数
- 在node.js web服务器上生成图像后,最简单的显示方法是什么(使用express)