简单理解javascript中的原型对象,实现对之间共享属性和行为

javascript中提供了构造函数,能够方便的创建对象。典型的构造函数如下:

function Person(name, age) 
{   
  this.name = name;
  this.age = age;
  this.say = function () {
    return this.name  + ',' + this.age;;
}

 

之后就可以用new和构造函数创建多个对象。javascript中,类的不同对象之间,属性和方法都是独立的。什么意思呢?java中类的不同对象之间,成员变量是独立的(每个对象都有自己的存储空间,存储属性值),但是方法是共享的,内存中只有一份。但是javascript中,方法也是一个对象一份。如果复创建了多个对象,那么每个对象中的方法都会在内存中开辟新的空间,这样浪费的空间就比较多。

var p1= new Person('a', 25);
var p2= new Person('b', 22); 
alert(p1.say == p2.say);//结果返回的是false,说明方法内存空间也不同



javascript中没有什么static和成员变量之分,如果想在对象之间共享数据或方法,只能借助原型对象,将共享的变量和方法都放在原型对象中。

function User(name,age)
{
    this.name = name;
    this.age = age;
}
User.prototype.addr = 'shenzhen';//在原型中添加属性
User.prototype.show = function(){//在原型中添加方法
    alert(this.name+'|'+this.age);    
};
var user1 = new User('ZXC',22);
var user2 = new User('CXZ',21);
alert(user1.show == user2.show);//返回 true 说明show方法是共享的

 

JS的构造函数都有一个prototype属性,指向它的原型对象(其实就是个普通的JS对象)。通过同一个构造函数创建出来的对象,共享同一个原型对象。原型对象初始化的时候是空的,我们可以在里面自定义任何属性和方法,这些方法和属性都将被该构造函数所创建的对象继承。如果原型发生了变化,那么所有实例都会跟着改变。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JavaScript 原型是一种非常重要的概念。在 JavaScript ,所有的对象都有一个原型,而原型也是对象。当我们访问一个对象属性时,如果这个对象本身没有这个属性,那么 JavaScript 引擎检查这个对象原型,看看原型对象是否有这个属性。如果原型对象也没有这个属性,那么 JavaScript 引擎继续检查原型对象原型,以此类推。这样的一种继承机制就是 JavaScript 原型实现方式。 要想很好地理解 JavaScript 原型,有以下几点建议: 1. 首先要确保自己对 JavaScript 对象有一个较为深入的理解对象JavaScript 非常重要的概念,而原型对象的一个重要特性。 2. 了解 JavaScript 原型链,即对象原型指向另一个对象,而这个对象原型指向另一个对象,以此类推。这种继承机制就是 JavaScript 原型链。 3. 学习使用原型的相关方法,比如 `Object.create()` 和 `Object.getPrototypeOf()` 等。这些方法可以帮助我们创建和操作对象原型。 4. 多看一些相关的文章和教程,多 ### 回答2: 要很好地理解JavaScript原型,我们首先需要了解几个概念。在JavaScript,每个对象都有一个原型(prototype),它定义了该对象属性方法。当我们调用一个对象属性方法时,如果对象自身没有定义这个属性方法JavaScript引擎就去查找它的原型链,直到找到为止。 原型链是一种对象之间的连接方式,它是通过每个对象原型实现的。每个对象都有一个__proto__属性,指向它的原型。当我们访问对象属性方法时,如果对象自身没有定义,JavaScript引擎就通过__proto__找到它的原型,然后继续向上查找,直到找到为止。 JavaScript原型是通过构造函数来创建的。构造函数是一种特殊的函数,它定义了一个对象的结构和行为。当我们使用new关键字来调用一个构造函数时,JavaScript引擎创建一个新的对象,并将该对象原型指向构造函数的原型。这样,新创建的对象就继承了构造函数的属性方法原型的作用是实现代码的重用和继承。通过原型,我们可以将方法属性定义在构造函数的原型上,这样所有通过该构造函数创建的对象都可以共享这些方法属性。这样可以大大减少重复代码的书写,并且方便对对象进行扩展和修改。 要想很好地理解原型,我们可以通过以下几个步骤进行学习: 1. 学习构造函数和new关键字的使用方式,了解原型是通过构造函数来创建的。 2. 了解__proto__属性原型链的概念,理解对象之间的连接方式。 3. 学习如何将方法属性定义在构造函数的原型上,了解如何通过原型链来访问这些方法属性。 4. 练习使用原型实现对象之间的继承,理解原型链的继承机制。 5. 阅读和调试一些使用原型的代码,理解原型的实际应用场景和作用。 通过以上步骤的学习和实践,我们就能够较好地理解JavaScript原型,从而更好地理解和使用JavaScript的面向对象编程特性。 ### 回答3: 理解JavaScript原型可以从以下几个方面入手: 首先,JavaScript是一种基于原型的语言,每个对象都有一个原型对象可以通过它的原型继承属性方法原型是一个普通的对象,它包含一些共享属性方法,被实例化的对象可以访问这些属性方法。 其次,可以通过构造函数来创建一个对象,构造函数原型属性可以被所有由这个构造函数创建的对象共享。利用构造函数和原型的结合,可以实现对象的继承和属性共享。 另外,JavaScript原型链是通过属性的查找机制实现的。在访问一个对象属性时,如果对象本身没有该属性,它沿着原型链向上查找,直到找到对应的属性或者到达原型链的末端。 通过理解这些概念,可以更好地理解JavaScript原型。可以通过以下几个步骤来理解原型: 1. 创建对象时的属性方法定义在构造函数,构造函数的原型属性指向一个普通对象,该对象包含了共享属性方法。 2. 通过构造函数创建实例对象,实例对象可以访问构造函数的原型属性定义的共享属性方法。 3. 如果实例对象访问一个属性或者方法,而实例对象本身没有该属性或者方法,它沿着原型链向上查找,直到找到对应的属性或者到达原型链的末端。 4. 如果需要更改某个属性或者方法,可以将新的属性或者方法赋值给实例对象,这样实例对象在自身创建一个同名的属性或者方法,从而覆盖原型链上的属性或者方法。 通过理解并实践这些步骤,可以更深入地理解JavaScript原型,并能够灵活运用原型实现对象的继承和属性共享

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值