首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Prototype :使用构造函数和仅使用对象本身的区别

Prototype :使用构造函数和仅使用对象本身的区别
EN

Stack Overflow用户
提问于 2019-03-26 03:39:16
回答 3查看 35关注 0票数 0

我正在研究javascript原型。

案例01 -成功!

代码语言:javascript
运行
AI代码解释
复制
var A = function() {}
A.prototype.hello = function() {
  console.log('hello');
}

var B = function() {}
B.prototype = new A();

var C = function (){}
C.prototype = new B();

var c = new C();
c.hello();

案例02 -不工作!

代码语言:javascript
运行
AI代码解释
复制
var A = {
  hello : function() {
    console.log('hello');
  }
}
var B = {}
B.prototype = A;
var C = {}
C.prototype = B;
C.hello();

我想我不理解prototype和构造器的概念,也不理解对象是如何相互继承的。有人能解释一下为什么CASE 02不能工作吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-26 03:46:52

B.prototype将成为B对象上的一个键,因为B.prototype = A将在B上创建一个键名为prototype的键。与C类似,它将创建prototype的嵌套键

代码语言:javascript
运行
AI代码解释
复制
var A = {
  hello: function() {
    console.log('hello');
  }
}
var B = {}
B.prototype = A;
console.log(B)
var C = {}
C.prototype = B;
console.log(C)
C.prototype.prototype.hello();

票数 0
EN

Stack Overflow用户

发布于 2019-03-26 03:54:16

我真的无法解释,但对我来说,这只是一个语法问题:

代码语言:javascript
运行
AI代码解释
复制
var A = {
  hello : function() {
    console.log('hello');
  }
}

var X = Object.create(A);
X.hello();

票数 0
EN

Stack Overflow用户

发布于 2019-03-26 03:58:02

我认为需要注意的一点是,原型是函数的属性,而不是对象。情况2不起作用主要是因为这个原因。

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

https://stackoverflow.com/questions/55349514

复制
相关文章
JavaScript OOP(三):prototype原型对象(即构造函数的prototype属性)
通过构造函数生成的实例化对象,无法共享属性或方法(即每个实例化对象上都有构造函数中的属性和方法);造成了一定的资源浪费 1 function Obj(name,age){ 2 this.name=name; 3 this.age=age; 4 this.func=function(){ 5 return 'this is a test function'; 6 }; 7 } 8 var o1=new Obj('小明',10); 9 var o
用户1149564
2018/01/11
1.1K0
JavaScript OOP(三):prototype原型对象(即构造函数的prototype属性)
js 中的构造函数,构造函数作用,构造函数和普通函数的区别
函数的定义方式: 1.声明式函数定义: function 函数名 (){};这种定义方式,会将函数声明提升到该函数所在作用域的最开头,也是就无论你在这个函数的最小作用域的那儿使用这种方式声明的函数,在这个作用域内,你都可以调用这个函数为你所用。 2.函数表达式:let fun = function(){}; 此方式定义的函数,只能在该作用域中,这段赋值代码执行之后才能通过fun()调用函数,否则,由于变量声明提升,fun === undefined。 3.new Function 形式: var fun1 = new Function (arg1 , arg2 ,arg3 ,…, argN , body );Function构造函数所有的参数都是字符串类型。除了最后一个参数, 其余的参数都作为生成函数的参数即形参。这里可以没有参数。最后一个参数, 表示的是要创建函数的函数体。
全栈程序员站长
2022/10/04
3.7K0
构造函数内的方法与构造函数prototype属性上方法的对比(转)
本文的目的是让大家理解什么情况下把函数的方法写在JavaScript的构造函数上,什么时候把方法写在函数的prototype属性上;以及这样做的好处.
山河木马
2019/03/05
1.2K0
构造函数内的方法与构造函数prototype属性上方法的对比(转)
java构造代码块,构造函数和普通函数的区别和调用时间
在这里我们谈论一下构造代码块,构造函数和普通函数的区别和调用时间。 构造代码块:最早运行,比构造函数运行的时间好要提前,和构造函数一样,只在对象初始化的时候运行。 构造函数:运行时间比构造代码块时间晚,也是在对象初始化的时候运行。没有返回值,构造函数名称和类名一致。 普通函数:不能自动调用,需要对象来调用,例如a.add(); 如果只看代码运行先后顺序的话:构造代码块>构造函数>普通函数 下面给一个程序
用户3030674
2018/09/14
1.5K0
java构造代码块,构造函数和普通函数的区别和调用时间
js中构造函数和普通函数的区别_函数声明和函数定义
b.构造函数的调用方式:需要使用new关键字来调用 new Person();
全栈程序员站长
2022/10/04
3.3K0
js中构造函数和普通函数的区别_函数声明和函数定义
Javascript类函数中prototype与this的区别
通过this与prototype定义的方法有什么区别呢? 运行以上代码可以发现,showName方法可以访问类函数中的定义的变量与方法,而protoFunction只能访问showName方法。 如果将protoFunctionin定义在构造函数内部,就可以访问这些属性和方法了。但作为实例函数,如果定义在构造函数内部,每次实例化都要执行,显然在浪费内存,也不合理。 有些资料上把this.showName这类方法叫做特权方法,主要是为了访问内部的私有字段,这样就可以控制对某些字段的访问。 而protoFunction这类方法相当于类的实例方法,但能访问这些特权方法,间接访问私有字段。
用户2936342
2018/08/27
9080
使用函数对象与使用函数的比较
1.使用函数对象,可以让函数变得有状态。而且可以在运行期再初始化。 2.函数对象通常比寻常函数速度快。 template<int theValue> void add(int& elem){ elem += theValue; } class AddValue{ private: int theValue; public: AddValue(int v) : theValue(v){} void operator()(int& elem) const { e
forxtz
2020/10/10
1.1K0
python chr/ord函数区别和使用
python中 内置函数 chr 和 内置函数 ord 可以配对使用;chr函数将ascll码转为字符;ord函数将字符转为ascll码;
猿说编程[Python和C]
2020/03/13
1K0
PHP面向对象-构造函数和析构函数
构造函数是一种特殊的函数,用于在对象创建时初始化对象的属性。每当创建一个新对象时,PHP都会自动调用构造函数。构造函数的名称必须与类名相同,并且可以带有参数。
堕落飞鸟
2023/04/27
6660
session对象和Cookie对象的使用方法以及区别
目录 session对象的使用 Cookie对象的使用 ---- session对象的使用 session对象用来储存有关用户会话的所有信息 首先,我们来了解一下会话是什么?看下面这张图,大概可以理解什么是会话了 下面是session的使用方法 类型 方法名称 说  明 void setAttribute(String key,Object value) 以key/value的形式保存对象值 Object getAttribute(String key) 通过key获取对象值 int getMaxIna
天蝎座的程序媛
2022/11/18
5050
session对象和Cookie对象的使用方法以及区别
构造函数的使用方法分析
尽管对于大部分的数据传输对象(DTO)对象,以及我们的domain模型,属性值都是能够起到相应的作用,但是,在某些情况下如我们想使用一些固定的类。比如:表格中包括一些仅供浏览的数据或者很少改变的数据。Mybatis的构造函数注入功能允许我们在类初始化时就设置某些值,而不暴露其中的public方法。 例如,程序中我们存在这样一个实体类,如下:
用户8983410
2021/10/07
1K0
为什么我应该使用指针而不是对象本身
对于现代 C++ (尤其是 C++ 11 之后),大量使用 new 动态分配是不明智的选择。
ClearSeve
2022/02/10
1.5K0
java scanner构造函数_使用Scanner作为构造函数的参数的Java
这是一个学校任务的问题,这就是为什么我这样做的原因。使用Scanner作为构造函数的参数的Java
用户7886150
2021/04/26
3K0
C#构造函数里的base和this的区别
父类的构造函数总是在子类之前执行的。既先初始化静态构造函数,后初始化子类构造函数。
跟着阿笨一起玩NET
2018/09/19
1.5K0
PHP面向对象之构造函数和析构函数
构造方法又称为构造函数,是对象被创建时自动调用的方法,一般用来完成类初始化需要做的事情
hedeqiang
2019/12/17
8710
构造函数隐式转换_构造函数实例化对象
http://blog.csdn.net/thefutureisour/article/details/7705771
全栈程序员站长
2022/11/10
4360
函数入参使用指针和引用的区别
赋值的来源为已定义的结构体:TreeSet treeSet = {0}中的trSet->tNameSet[i].tName地址(其中i为变量。
charlieroro
2020/03/24
7740
原型和原型链 prototype和proto的区别
原型是function对象下的属性,它定义了构造函数的共同祖先,也就是一个父子级的关系,子对象会继承父对象的方法和属性
小丞同学
2021/08/16
4210
秒懂JS对象、构造器函数和原型对象之间的关系
学习JS的过程中,想要掌握面向对象的程序设计风格,对象模型(原型和继承)是其中的重点和难点,拜读了各类经典书籍和各位前辈的技术文章,感觉都太过高深,花费了不少时间才搞明白(个人智商是硬伤/(ㄒoㄒ)/~~),这里略作总结尽量通俗易懂。 一、基本概念   1、对象:属性和方法的集合,即变量和函数的封装。每个对象都有一个__proto__属性,指向这个对象的构造函数的原型对象。   2、构造器函数:用于创建对象的函数,通过new关键字生成对象。函数名一般首字母大写的。   3、原型对象:每个函数都有一个prot
小古哥
2018/03/08
2K0
秒懂JS对象、构造器函数和原型对象之间的关系
Canvas 绘制折线图 - 使用prototype属性构建对象
前面的几篇文章介绍了如何绘制网格图、坐标系、坐标系中的点,那么本篇章将这些步骤方法,以js原型面向对象的方式开发,编写出一个折线图的示例。
Devops海洋的渔夫
2020/02/13
1.3K0

相似问题

对象构造函数的prototype属性

12

如何使用Object.prototype向对象构造函数添加函数?

15

构造函数和对象之间的区别

42

使用prototype扩展对象和使用内联扩展对象有什么区别?

32

使用CSS和Prototype获取innerHTML和元素本身?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档