`
zhangjing_wgd
  • 浏览: 614 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

prototype原型链

阅读更多
起初接触到这个prototype我是拒绝的,我还是花了一部分时间来理解这个东西,算不上精通,有什么问题回复在下面

毕竟我是板砖挨惯了(滑稽);

在我理解看来,prototype不外乎就两个基础的作用:
1.动态的添加类的属性和方法
2.复制原类的内容

我们先来看第一个:
首先来定义一个简单的Person类;

var Person = function(name,age){
//指定该类的属性为参数值
this.name = name;
this.age = age;
//为该类指定一个talk方法
this.talk = function(){
alert("talk");
};
};

下面我们来生成Person 的实例

var zhangsan = new Person("zhangsan",19);
var lisi = new Person("lisi",19);
1
2
这样我们产生了两个Person 的实例,zhangsan 和lisi ,原先Person里有个方法talk,而我们生成实例的时候,该talk会被再次生成一遍,因此这是极其不好的,因为假如我们要产生100个Person 的实例,该talk()就会被创建100次,而这很有可能导致内存溢出。那有没有办法只创建一次talk()呢,答案是有的!就是用prototype!

先来看一段代码:

//照样是定义一个Person的类
var Person = function(name,age){
//指定该类的属性为参数值
this.name = name;
this.age = age;
//我们这里不再为Person设定talk方法
};
};

再次来生成Person 的实例

var zhangsan = new Person("zhangsan",19);
var lisi = new Person("lisi",19);

这里创建完毕后,我们得知,zhangsan和lisi都没有talk的方法,我们现在用prototype给他们加上

Person.prototype.talk = function(){
alert("talk");
};

此时,Person所有的实例都拥有了这个方法

zhangsan.talk();//"talk"
lisi,talk();//"talk"

既然第一种用处搞清楚了,现在来看第二种用处。
所谓第二种用处就是复制原类的内容。

//新建一个类Person2
var Person2 = function(name,age){};
Person2.prototype = new Person();

此时的Person里的内容已经全部拷贝到Person2里面了
分享到:
评论

相关推荐

    javascript prototype 原型链

    JavaScript中的原型链(Prototype Chain)是理解面向对象编程在JavaScript中的实现方式的关键概念。原型链是基于原型(Prototype)机制的一种实现,它允许对象继承其他对象的属性和方法。在JavaScript中,每个函数...

    强大的原型和原型链

    ### 强大的原型和原型链 #### 前言 JavaScript 的继承机制与传统面向对象语言(如 Java、C#)中的类继承不同,它采用了基于原型(Prototype-based)的继承模型。这种模型使得 JavaScript 在处理对象之间的继承关系...

    js原型链详解

    JavaScript会查找该实例的__proto__,也就是其构造函数的prototype所指向的原型对象,若仍未找到,则会继续往上查找,直到到达原型链的末端(通常是指向Object.prototype的原型对象)。 #### 原型链 原型链是...

    JavaScript原型链

    JavaScript中的构造函数、`new`操作符和`prototype`属性也与原型链紧密相关。当我们使用`new`关键字调用一个构造函数时,会创建一个新的对象,这个新对象的`[[Prototype]]`被设置为构造函数的`prototype`属性所指向...

    原型链全套图解.rar

    原型链的构建通常是通过构造函数的`prototype`属性来实现的。当创建一个新的实例时,它的`__proto__`会被设置为构造函数的`prototype`。例如: ```javascript function Person() {} Person.prototype.name = "John...

    【技术分享】从浅入深 Javascript 原型链与原型链污染 .pdf

    原型链污染(Prototype Pollution)是一种安全漏洞,它利用了JavaScript允许修改任何对象的原型这一特性。攻击者可以通过构造特定的输入,修改原型链上的属性,从而影响程序的正常行为,甚至获取敏感信息。例如,...

    我所理解的从原型到原型链.pdf

    在JavaScript中,理解原型(Prototype)与原型链(Prototype Chain)是至关重要的。这两个概念是语言的核心部分,对于深入理解对象的属性查找机制、继承等方面有着不可替代的作用。 #### 原型(Prototype) 在...

    javascript prototype原型操作笔记.docx

    ### JavaScript Prototype原型操作知识点 #### 一、Prototype基础概念 **Prototype** 在 JavaScript 中是一个非常重要的概念,它支持面向对象编程中的继承特性。每个 JavaScript 对象都有一个内部属性 `[...

    深度探讨javascript函数的原型链和闭包

    `[[Prototype]]`是每个JavaScript原生对象内置的原型属性,但不能直接访问,只能在查找原型链时由JavaScript引擎使用。它是JavaScript实现继承的基础。而`prototype`是函数对象的属性,可以直接通过JavaScript访问。...

    JavaScript你一定要搞懂的原型链

    当访问一个对象的属性或方法时,如果对象本身没有定义该属性或方法,JavaScript 就会沿着原型链向上查找,直到找到该属性或方法或者到达原型链的末尾(null)为止。 原型链图是用于表示 JavaScript 中对象之间原型...

    js 原型对象和原型链理解

    一个例子让你彻底明白原型对象和原型链 开篇 之前对js中的原型链和原型对象有所了解,每当别人问我什么是原型链和原型对象时,我总是用很官方(其实自己不懂)的解释去描述。有一句话说的好:如果你不能把一个很复杂...

    Js原型和原型链1

    5. `prototype`的主要作用是实现继承,通过原型链,子类可以访问父类的`prototype`中的属性和方法。 了解这些知识点,有助于深入理解JavaScript中的面向对象编程,以及如何利用原型和原型链实现对象间的属性继承和...

    JS原型和原型链原理与用法实例详解

    现在,`One`的实例将会有一个原型链,从`One.prototype`到`Two.prototype`,再到`Two.prototype`的`__proto__`(通常是`Object.prototype`)。 总结来说,JavaScript的原型和原型链提供了面向对象编程中的继承机制...

    原型链污染漏洞+前后端实战案例

    在JavaScript编程中,原型链(Prototype Chain)是理解对象继承机制的关键。原型链污染漏洞是一种安全问题,它允许攻击者通过篡改或注入代码来操纵对象的原型,从而可能导致数据泄漏、逻辑错误甚至完全控制应用程序...

    js中的继承与原型链1

    JavaScript中的继承和原型链是其核心特性之一,尤其对于从基于类的语言背景转到JavaScript的开发者来说,理解这一概念至关重要。在JavaScript中,没有传统的类,而是基于对象和原型进行继承。每个对象都有一个指向其...

Global site tag (gtag.js) - Google Analytics