Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript继承问题

Javascript继承问题
EN

Stack Overflow用户
提问于 2011-11-10 13:40:00
回答 4查看 87关注 0票数 2

根据这里的#“solutions...or继承”问题,我假设我的问题可能已经在其他地方得到了回答,显然我只是不理解其他javascript。

我的问题是,为什么下面的代码( http://jsfiddle.net/Se9ZW/2/ )打印"test5“而不是"test1"?

代码语言:javascript
运行
AI代码解释
复制
var fake = { value:'test1'};
var fake2=fake;
fake2.value='test5';
document.getElementById('debug').innerHTML=fake.value;

这些似乎是很明显的事情,所以我甚至对提出它都有些尴尬,但我想你应该以某种方式学习。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-10 13:46:35

fakefake2是对同一对象的引用,所以它们的行为完全在意料之中。它与继承无关。

现在,如果你想继承,一种方法(我可以补充说,相当幼稚)是这样做的:

代码语言:javascript
运行
AI代码解释
复制
var fake = { value:'test1'};
var fake2 = Object.create(fake); //creates a new object with fake as prototype
fake2.value = 'test5'; // "overrides" the value property from the prototype
console.log(fake.value);

然后输出将是:

代码语言:javascript
运行
AI代码解释
复制
test1

请注意,这是来自ECMAScript版本5-它是相当新的,并不是在所有JavaScript引擎实现中都能工作。

在JavaScript中实现/使用继承有多种方法。我将向您推荐其中一个解释,。

票数 4
EN

Stack Overflow用户

发布于 2011-11-10 13:46:01

这是因为

代码语言:javascript
运行
AI代码解释
复制
var fake2 = fake;

将fake引用创建到fake2中。如果您在fake2中更改了任何内容,fake也会被更改。

票数 1
EN

Stack Overflow用户

发布于 2011-11-10 14:01:04

也许你被术语搞糊涂了?以下是没有"reference“和”value“的解释:

{ value:'test1'}是一个对象。你可以把它想象成一个装满东西的桶。在本例中,存储桶在名为value的内部有一件事。

在第1行,您将fake指向桶。在第二行,您将fake2指向fake。因为fake只是指向一个存储桶,所以fake2也指向完全相同的存储桶。

在第3行,fake2.value是存储桶中名为value的东西。在同一个存储桶中,fake2.value是相同的东西。

同样的事情的另一种说法是,在javascript中,原语(比如:具体的东西)是通过值传递的,而对象(比如:容器和/或桶)是通过引用传递的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8080362

复制
相关文章
JavaScript 继承
什么是继承? 继承就是你爸爸很多钱,所以你就继承你爸爸,变成了富二代,也是个有钱的主,突然你爸爸世界杯赌球,输了个精光,于是你也变成了穷光蛋。这个就是继承 非也,非也。
chuchur
2022/10/25
3340
JavaScript 继承
JavaScript组合继承
组合继承(Combination Inheritance)是 JavaScript 中一种常用的继承模式,它结合了原型链继承和构造函数继承的优点。通过组合继承,我们可以使用构造函数继承来继承实例属性,并通过原型链继承来继承共享的方法和属性。
堕落飞鸟
2023/05/18
2940
JavaScript实现继承
众所周知,JavaScript 这门语言在 ES6 出来之前是没有类(class)这一概念的,所以 JavaScript 中的类都是通过原型链来实现的。同样,使用 JavaScript 也能实现面向对象的实现继承。以下是《高程》(第三版)的读书笔记。
疯狂的技术宅
2019/03/28
5190
JavaScript实现继承
使用class继承非常简单。子类使用extends关键字表明继承于哪个类,并在子类中调用super(),这相当于使用call()改变this的指向。
不作声
2020/10/30
4130
JavaScript实现继承
本文不准备深入细节,主要是对《JavaScript高级程序设计中》介绍的JS如何实现继承做一个总结,毕竟好记性不如烂笔头。文末会附带一张神图,搞清楚这张图,原型链也就没有什么问题了。
leocoder
2018/10/31
6750
Javascript 组合继承 原型链继承 寄生继承
该继承通过构造函数继承原型链的方法和父类的属性,但该方法会有两次调用父类,第一次是在继承原型链,第二次在继承属性。
菜的黑人牙膏
2019/01/21
1.1K0
实现JavaScript继承
使用TypeScript或者ES2015+标准中的extends关键字是很容易实现继承的,但这不是本文的重点。JS使用了基于原型(prototype-based)的继承方式,extends只是语法糖,本文重点在于不使用extends来自己实现继承,以进一步理解JS中的继承,实际工作中肯定还是要优先考虑使用extends关键字的。
雪飞鸿
2020/12/29
6030
Javascript继承,再谈
     说到Javascript的继承,相信只要是前端开发者都有所了解或应用,因为这是太基础的知识了。但不知各位有没有深入去理解其中的玄机与奥秘。今本人不才,但也想用自己的理解来说一说这其中的玄机和奥秘。 一、类继承的发展吏 function实现的继承 function的继承是完全模仿了OOP的编程思想。实现的是类的继承 object.create实现的继承 用object.create来修改其原型 es6的继承 增加了class来模拟OOP的继承实现。上述两种继承实现,他都还是支持的。
sam dragon
2018/03/28
8100
JavaScript对象的继承
基于原型链,即把一个对象的原型设置为另一个对象的实例,那么这个对象实例也就拥有了另一个对象上的属性。
闲花手札
2021/11/17
7410
简单的JavaScript继承
我想要提取这些技术的精华,以一个简单的、可复用的方式进行展示,以便使这些特性更容易不依赖其他的内容而被理解。此外我想要使其可以被简单的、高效的被使用。这里展示了一个可以使用完成后的结果来实现的实例。(译者注:既完成后的代码可以用于实现下面这个功能)
疯狂的技术宅
2019/03/27
6050
前端基础-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
4650
JavaScript 面试要点: 继承
ECMA-262 把原型链定义为 ECMAScript 的主要继承方式。其基本思想就是通过原型继承多个引用类型的属性和方法。对属性和方法的搜索会一直持续到原型链的末端。
Cellinlab
2023/05/17
1910
JavaScript 面试要点: 继承
JavaScript之对象继承
该方法创建一个仅用于封装继承过程的函数,该函数在内部以某种方式来增强对象,最后再像真地是它做了所有工作一样返回对象。
laixiangran
2018/07/25
4450
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
6190
Javascript 的继承总结
写惯了 TypeScript 的人很容易了解继承(extends),比如类的继承和接口的继承等,传送门:www.tslang.cn/docs/handbo… ,但是对于ES2015出现之前,JavaScript如何实现继承的呢?毫无疑问,只能通过原型链的方式实现继承,本篇主要是在读书时遇到了原型继承的问题,回顾以下原型继承的集中方式并整理成笔记方便日后查阅。
Meteors
2021/12/08
2740
JavaScript继承与聚合
(1)call方法可以将一个函数的对象上下文从初始化变成由this来决定                     一个类去控制另一个类
wfaceboss
2019/04/08
7280
JavaScript继承与聚合
JavaScript原型与继承
对于使用过基于类的语言 (如 Java 或 C++) 的开发人员来说,JavaScript 有点令人困惑,因为它是动态的,并且本身不提供一个 class 实现。(在 ES2015/ES6 中引入了 class 关键字,但那只是语法糖,JavaScript 仍然是基于原型的)。
用户1428723
2020/08/06
5520
JavaScript原型链继承
在JavaScript中,每个对象都有一个原型(prototype),原型本身也是一个对象。当我们访问一个对象的属性或方法时,如果该对象本身没有该属性或方法,JavaScript会自动去它的原型对象中查找。如果原型对象也没有找到,JavaScript会继续在原型对象的原型上查找,这样形成了一个原型链。
堕落飞鸟
2023/05/17
4140
详解JavaScript对象继承方式
其原理如下:构造函数使用 this 关键字给所有属性和方法赋值(即采用类声明的构造函数方式)。因为构造函数只是一个函数,所以可使 Parent 构造函数 成为 Children 的方法,然后调用它。Children 就会收到 Parent 的构造函数中定义的属性和方法。例如,用下面的方式定义 Parent 和 Children:
用户6167509
2019/09/04
4550
javascript-继承之jquery
jquery 截止到当前已经 3.3.1 版本了,如今随着各种浏览器的盛行,前端的框架层出不穷,jquery 独步天下,老夫写代码只用 jquery,拿起代码就是干的辉煌时代已经过去了。
chuchur
2022/10/25
1.1K0
javascript-继承之jquery

相似问题

Javascript继承问题

20

JavaScript继承问题

38

javascript继承问题

12

Javascript继承问题

11

基本javascript继承问题

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档