当前位置: 首页 > 编程笔记 >

javascript 将共享属性迁移到原型中去的实现方法

颜嘉福
2023-03-14
本文向大家介绍javascript 将共享属性迁移到原型中去的实现方法,包括了javascript 将共享属性迁移到原型中去的实现方法的使用技巧和注意事项,需要的朋友参考一下

当我们用一个构造函数创建对象时,其属性就会被添加到this中去。并且被添加到this中的属性实际上不会随着实体发生改变,这时,我们这种做法显得会很没有效率。例如:

function her(){
  this.name = 'Anna';
}

这意味着每次我们new her()创建一个实例对象的时候都会生成一个全新的name属性,并在内存中拥有属于该属性自己的存储空间。而事实上,我们可以将name属性添加到原型上去,这样一来所有实例都可以共享这个name属性了:

function her(){}
her.prototype.name = 'Anna';

这样一来,我们再用new her()创建对象的时候,name属性就不再是新对象的私有属性了,而是被添加到该对象的原型中去了。虽然这种做法会很有效率,但这也是针对实例对象中的不可变属性而言的,这是一定的不然的话改一下这个属性,所有被创建的新对象的这个属性都会被改变,这可不是我们想要的啊~~~。对象的公有属性尤其适合这种方法。

下面,我们来改进以前的一个例子:

function her(){};
her.prototype.name = 'Anna';
her.prototype.toString = function(){
  return this.name;
}

function his(){};
his.prototype = new her();
his.prototype.constructor = his;
his.prototype.sex = 'women';

如您所见,通常我们在进行原型对象扩展之前,我们现完成了相关继承工作的构建,否则his.prototype中后续新的属性方法有可能会抹掉继承来的东西。

function child(f, m){
  this.eat = f;
  this.don = m;
}
child.prototype = new his();
child.prototype.constructor = child;
child.prototype.name = 'Jok';
child.prototype.fun = function(){
  return this.eat + this.don
}

如您所见,实际上调用toString()这个方法的区别仅仅在于幕后的少量操作。主要区别也就是属性,方法的查找工作将更多地发生在her.prototype中。

以上这篇javascript 将共享属性迁移到原型中去的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍JavaScript检测实例属性, 原型属性,包括了JavaScript检测实例属性, 原型属性的使用技巧和注意事项,需要的朋友参考一下 0.前提 JavaScript对象的属性分为两种存在形态. 一种是存在实例中, 另一是存在原型对象中. 根据上述, 检测属性的时候会出现4种情况 既不存在实例中, 也不存在原型对象中 存在实例中, 不存在原型对象中 不存在实例中, 存在原型对象中

  • 本文向大家介绍JavaScript中关联原型链属性特性,包括了JavaScript中关联原型链属性特性的使用技巧和注意事项,需要的朋友参考一下 数据属性: 数据属性包含一个数据值的位置,在这个位置可以读取和写入值。 4个描述的行为特性: writable 表示能否修改属性的值。默认为true Enumerable 表示能否过过for in循环返回属性是否可以枚举。 configuralbe 表示是

  • 我目前正在从事一个Spring MVC项目,我们正在将所有jsp文件迁移到thymeleaf。我知道spring表单标记有一个htmlEscape属性,在呈现时会转义用户输入,例如当用户提交无效表单并且用户输入被绑定到表单时。例如: 这适用于输出转义,这是在处理模板进行渲染时在服务器端发生的事情。 这可以防止xss攻击的一个例子是,如果用户输入<代码> 有没有一种标准的方法可以在胸腔中实现同样的功

  • 应该怎么修改代码呀?才能运行过去 解决问题

  • 问题内容: 有没有人注意到这种行为?这真的让我失望了。我希望原型数组对每个类实例都是私有的,而不是在所有类实例之间共享。 有人可以验证这是正确的行为,也许可以更详细地解释这种行为? 请注意注释的代码以及它如何影响脚本的行为。 非常感谢。 问题答案: 对象的原型只是一个对象。原型属性在从该对象继承的所有对象之间共享。如果您创建“类”的新实例(JS中始终不存在类),即从原型继承的对象,则不会复制属性。

  • 我从获得了以下连接池配置。从Spring2开始,默认值为。如何将以下属性迁移到hikari挂件?我找不到他们:

  • 我通过重构迁移到AndroidX 我试过了 将项目与分级文件同步 我同步了Build.Gradle 使缓存无效/重新启动 清理项目,然后重建项目 我删除了.idea文件夹,然后删除并重新生成项目 什么都不起作用

  • 本文向大家介绍实现Asp与Asp.Net共享Session的方法,包括了实现Asp与Asp.Net共享Session的方法的使用技巧和注意事项,需要的朋友参考一下 在.net中,Session的存储机制已经与Asp的存储机制不一样,虽然可以在同一个IIS下同时运行asp与aspx,但是它们之间不能传递Session。 之前大批系统应用到了asp,在升级过程中,如果完全抛弃asp来重写,一来工作量太