关于 Object.create 的笔记
Object.create方法会返回一个新对象(带有指定的原型对象和属性)
1. 基于一个对象去创建新的对象
1 var person = { 2 isHuman: false, 3 print: function() { 4 console.log(`My name is ${this.name}. Am I human? ${this.isHuman}`); 5 }, 6 }; 7 8 const me = Object.create(person); 9 10 // 'name'是 me 的自有属性(非person对象的) 11 me.name = 'John'; 12 // 继承自person上的isHuman属性将被改写 13 me.isHuman = true; 14 15 me.print();
2. 实现继承
1 // 父类 - Shape 2 function Shape() { 3 this.x = 0; 4 this.y = 0; 5 } 6 7 Shape.prototype.move = function(x, y) { 8 this.x += x; 9 this.y += y; 10 }; 11 12 // 子类 - Rectangle 13 function Rectangle() { 14 Shape.call(this); 15 } 16 17 // 继承 18 Rectangle.prototype = Object.create(Shape.prototype); 19 Rectangle.prototype.constructor = Rectangle; 20 21 var rect = new Rectangle();
3. 方法使用细节
1 var o; 2 // 创建一个原型为null的空对象 3 o = Object.create(null); 4 5 // 以字面量创建的空对象 o = {} 相当于: 6 o = Object.create(Object.prototype); 7 8 // 关于Object.create的 propertyObject 参数的使用 9 o = Object.create(Object.prototype, { 10 // 添加数据属性 11 foo: { 12 writable: true, 13 configurable: true, 14 value: 'hello', 15 }, 16 // 添加存取器属性 17 bar: { 18 configurable: false, 19 get: function() { 20 return 10; 21 }, 22 set: function(val) { 23 console.log('Set "o.bar" to ', val); 24 }, 25 }, 26 }); 27 28 // function Cons() {} 29 // var c = new Cons(); 30 // // 等同于: 31 // var o = Object.create(Cons.prototype);
分类:
JavaScript
标签:
JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?