首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Javascript‘属性继承’

Javascript‘属性继承’
EN

Stack Overflow用户
提问于 2009-10-18 23:11:07
回答 3查看 176关注 0票数 3

有没有办法为数组中的对象文字指定通用元素?

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var array = [ {key: "hi", label: "Hi", formatter:deleteCheckboxFormatter},
              {key: "hello", label: "Hello", formatter:deleteCheckboxFormatter},
              {key: "wut", label: "What?", formatter:deleteCheckboxFormatter}];

这三条记录都使用相同的格式化程序。你将如何重构它?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-18 23:32:22

我脑海中浮现出两种选择:

公共字段使用默认值的辅助函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function make(key, label) {
  return {'key': key, 'label': label, formatter:deleteCheckboxFormatter};
}

var array = [ make("hi",  "Hi"),
              make("hello", "Hello"),
              make("wut", "What?")];

或者是一个更通用的函数,它接受格式化程序属性的参数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function make (formatter) {
  return function (key, label) {
    return {'key': key, 'label': label, 'formatter':formatter};
  }
}

// a function to build objects that will have a 'fooFormatter'
var foo = make('fooFormatter'); 

var array = [ foo ("hi",  "Hi"),
              foo ("hello", "Hello"),
              foo ("wut", "What?")];

我想到的最后一件事就是简单地迭代数组,分配公共字段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var array = [ {key: "hi", label: "Hi"},
              {key: "hello", label: "Hello"},
              {key: "wut", label: "What?"}];

var i = array.length;
while (i--) {
  array[i].formatter = 'deleteCheckboxFormatter';
}

我在这里以相反的顺序使用了while循环,因为迭代的顺序并不重要,并且这种类型的循环performs better

票数 3
EN

Stack Overflow用户

发布于 2009-10-18 23:21:54

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var array = [ {key: "hi", label: "Hi"},
              {key: "hello", label: "Hello"},
              {key: "wut", label: "What?"}];

for(var item in array)
  item["formatter"] = deleteCheckboxFormatter;
票数 0
EN

Stack Overflow用户

发布于 2009-10-18 23:40:01

您可以使用构造函数将其创建为对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function Obj(key, label){
  this.key = key;
  this.label = label;
  this.formatter = "deleteCheckboxFormatter";
}
var array = [ new Obj("hi", "Hi"),
              new Obj("hello", "Hello"),
              new Obj("wut", "What?") ];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1587328

复制
相关文章
JavaScript 继承
什么是继承? 继承就是你爸爸很多钱,所以你就继承你爸爸,变成了富二代,也是个有钱的主,突然你爸爸世界杯赌球,输了个精光,于是你也变成了穷光蛋。这个就是继承 非也,非也。
chuchur
2022/10/25
3220
JavaScript 继承
深入理解javascript中的继承机制(3)属性复制对象之间的继承深复制原型继承原型继承与属性复制的混合使用
我们开始换一种思路实现继承,可不可以直接将父对象的属性直接复制给子对象,这样子对象不久也拥有了父对象的属性,相当于继承。
desperate633
2018/08/22
1.5K0
深入理解javascript中的继承机制(3)属性复制对象之间的继承深复制原型继承原型继承与属性复制的混合使用
JavaScript组合继承
组合继承(Combination Inheritance)是 JavaScript 中一种常用的继承模式,它结合了原型链继承和构造函数继承的优点。通过组合继承,我们可以使用构造函数继承来继承实例属性,并通过原型链继承来继承共享的方法和属性。
堕落飞鸟
2023/05/18
2800
JavaScript实现继承
本文不准备深入细节,主要是对《JavaScript高级程序设计中》介绍的JS如何实现继承做一个总结,毕竟好记性不如烂笔头。文末会附带一张神图,搞清楚这张图,原型链也就没有什么问题了。
leocoder
2018/10/31
6670
JavaScript实现继承
使用class继承非常简单。子类使用extends关键字表明继承于哪个类,并在子类中调用super(),这相当于使用call()改变this的指向。
不作声
2020/10/30
4100
JavaScript实现继承
众所周知,JavaScript 这门语言在 ES6 出来之前是没有类(class)这一概念的,所以 JavaScript 中的类都是通过原型链来实现的。同样,使用 JavaScript 也能实现面向对象的实现继承。以下是《高程》(第三版)的读书笔记。
疯狂的技术宅
2019/03/28
5110
Javascript 组合继承 原型链继承 寄生继承
该继承通过构造函数继承原型链的方法和父类的属性,但该方法会有两次调用父类,第一次是在继承原型链,第二次在继承属性。
菜的黑人牙膏
2019/01/21
1.1K0
实现JavaScript继承
使用TypeScript或者ES2015+标准中的extends关键字是很容易实现继承的,但这不是本文的重点。JS使用了基于原型(prototype-based)的继承方式,extends只是语法糖,本文重点在于不使用extends来自己实现继承,以进一步理解JS中的继承,实际工作中肯定还是要优先考虑使用extends关键字的。
雪飞鸿
2020/12/29
5880
Javascript继承,再谈
     说到Javascript的继承,相信只要是前端开发者都有所了解或应用,因为这是太基础的知识了。但不知各位有没有深入去理解其中的玄机与奥秘。今本人不才,但也想用自己的理解来说一说这其中的玄机和奥秘。 一、类继承的发展吏 function实现的继承 function的继承是完全模仿了OOP的编程思想。实现的是类的继承 object.create实现的继承 用object.create来修改其原型 es6的继承 增加了class来模拟OOP的继承实现。上述两种继承实现,他都还是支持的。
sam dragon
2018/03/28
8050
JavaScript对象的继承
基于原型链,即把一个对象的原型设置为另一个对象的实例,那么这个对象实例也就拥有了另一个对象上的属性。
闲花手札
2021/11/17
7220
简单的JavaScript继承
我想要提取这些技术的精华,以一个简单的、可复用的方式进行展示,以便使这些特性更容易不依赖其他的内容而被理解。此外我想要使其可以被简单的、高效的被使用。这里展示了一个可以使用完成后的结果来实现的实例。(译者注:既完成后的代码可以用于实现下面这个功能)
疯狂的技术宅
2019/03/27
5940
前端基础-JavaScript继承
第4章 继承 学习目标 理解什么是继承 原型继承 4.1 什么是继承 现实生活中的继承 程序中的继承 所谓的继承,其实就是在子类(子对象)能够使用父类(父对象)中的属性及方法; 赋予后辈调用祖辈资源的权限,就是继承; 4.2 原型链继承 //声明构造函数Run function Run(){ this.p = function(){ console.log(this.name+'跑'); } } //声明构造函数Man function Man(name){ this.name
cwl_java
2020/03/26
4590
JavaScript 面试要点: 继承
ECMA-262 把原型链定义为 ECMAScript 的主要继承方式。其基本思想就是通过原型继承多个引用类型的属性和方法。对属性和方法的搜索会一直持续到原型链的末端。
Cellinlab
2023/05/17
1790
JavaScript 面试要点: 继承
Javascript 的继承总结
写惯了 TypeScript 的人很容易了解继承(extends),比如类的继承和接口的继承等,传送门:www.tslang.cn/docs/handbo… ,但是对于ES2015出现之前,JavaScript如何实现继承的呢?毫无疑问,只能通过原型链的方式实现继承,本篇主要是在读书时遇到了原型继承的问题,回顾以下原型继承的集中方式并整理成笔记方便日后查阅。
Meteors
2021/12/08
2700
JavaScript之对象继承
该方法创建一个仅用于封装继承过程的函数,该函数在内部以某种方式来增强对象,最后再像真地是它做了所有工作一样返回对象。
laixiangran
2018/07/25
4300
javascript原型链继承
function user(names,age,jobs){ if(this instanceof user){ this.names=name; this.age=age; this.jobs=jobs; } else{ return new user(name,age,jobs) } } admin.prototype=new user(); function admin(namek,pass){ user.call(this,'jcomey','28','de
2021/11/08
6120
JavaScript继承与聚合
(1)call方法可以将一个函数的对象上下文从初始化变成由this来决定                     一个类去控制另一个类
wfaceboss
2019/04/08
7190
JavaScript继承与聚合
JavaScript原型与继承
对于使用过基于类的语言 (如 Java 或 C++) 的开发人员来说,JavaScript 有点令人困惑,因为它是动态的,并且本身不提供一个 class 实现。(在 ES2015/ES6 中引入了 class 关键字,但那只是语法糖,JavaScript 仍然是基于原型的)。
用户1428723
2020/08/06
5340
JavaScript原型链继承
在JavaScript中,每个对象都有一个原型(prototype),原型本身也是一个对象。当我们访问一个对象的属性或方法时,如果该对象本身没有该属性或方法,JavaScript会自动去它的原型对象中查找。如果原型对象也没有找到,JavaScript会继续在原型对象的原型上查找,这样形成了一个原型链。
堕落飞鸟
2023/05/17
3990
CSS属性继承有哪些?(回顾)
CSS继承是指设置上级(父级)的CSS样式,上级(父级)及以下的子级(下级)都具有此属性。
青梅煮码
2023/01/16
7440

相似问题

JavaScript属性继承

24

Javascript继承实例属性?

30

Javascript对象属性继承

319

JavaScript继承和对象属性

26

Javascript不继承原型属性

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文