`

了解javascript编程中的Prototype(原型)

阅读更多

日期:2012-5-16  来源:GBin1.com

了解javascript编程中的Prototype(原型)

当你定义javascript方法的时候,会产生一些预定义的属性,其中一个比较让人迷惑的属性就是prototype。在本文中,我们将详细介绍什么是Prototype,并且为什么使用prototype。

什么是prototype?

prototype属性初始时是一个空的对象,可以添加对象 ,你可以添加任何对象到它里面去。

var myObject = function(name){
    this.name = name;
    return this;
};
console.log(typeof myObject.prototype); // object
myObject.prototype.getName = function(){
    return this.name;
};

在以上这段代码中,我们创建了一个方法,但是如果我们调用myObject(),将会返回window对象,因为它被定义在全局范围中。 this将会返回全局对象,因为没有被实例化。

console.log(myObject() === window); // true

秘密的连接

每一个javascript中的对象都有一个秘密属性。 

在我们继续之前,我想讨论一下决定prototype工作方式的“秘密”连接。

每一个javascript对象在定义或者实例化的时候都会添加一个秘密的属性,叫__proto__,这决定了prototype链如何被访问。然而,在你的应用中访问这个__proto__属性绝对不是一个好主意,因为不是所有浏览器都可访问。

__prototype__ 属性在一个对象的prototype中不应该被弄混了, 因为它有两个分开的属性;意味着他们都是手拉手来使用的。对于弄清楚这个很重要。因为最开始的时候肯定比较令人迷惑。 那究竟什么意思呢? 这里我们解析一下。 当我们创建myObject方法时,我们定义了一个Function类型的对象。

console.log(typeof myObject); // function

如果你不知道的话, Function是一个javascript预定义的对象,这样的话,拥有自己的属性(例如,length和arguments)和方法(例如,call和apply)。这意味着,在javascript的引擎中,这里有类似如下代码的部分:

.....

.....

来源:了解javascript编程中的Prototype(原型)

分享到:
评论

相关推荐

    了解JavaScript中的prototype (实例)

    JavaScript中的`prototype`是理解面向对象编程的关键概念之一。它是一种机制,允许对象共享属性和方法,从而实现代码复用。在JavaScript中,每个函数(包括构造函数)都有一个内置的`prototype`属性,这个属性指向一...

    JavaScript中的prototype(原型)属性研究

    JavaScript中的...总结,JavaScript中的prototype属性是实现面向对象编程的重要组成部分,它涉及到继承、方法共享以及原型链等核心概念。理解并熟练运用这些知识,能够帮助开发者构建更复杂、更高效的应用程序。

    javascript prototype原型操作笔记.docx

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

    JavaScript中的原型prototype完全解析

    JavaScript中的原型和prototype是理解该语言面向对象机制的核心概念之一,它支撑着JavaScript的“一切皆对象”的编程范式。接下来,我们将详细解析...了解和掌握原型和prototype对于深入掌握JavaScript编程至关重要。

    详解JavaScript中基于原型prototype的继承特性_.docx

    JavaScript中的原型(prototype)机制是实现继承的一种核心方式。由于JavaScript是一种基于原型的面向对象语言,它不支持传统的类(class)概念,因此其继承机制显得与众不同。在JavaScript中,对象可以直接从另一个...

    原型设计模式prototype

    在面向对象编程中,当我们需要频繁地创建具有相同或相似属性的对象时,原型模式可以极大地提高效率。 ### 模式原理 在原型模式中,一个类定义了创建新对象的接口,而其实现由它的子类完成。这个接口通常只有一个...

    JavaScript_Prototype(源代码+中文手册).rar

    JavaScript Prototype 是一种重要的编程概念,尤其在Web开发中不可或缺。这个压缩包文件“JavaScript_Prototype(源代码+中文手册).rar”包含了关于JavaScript原型的源代码和中文手册,为学习和理解这一主题提供了...

    JavaScript的prototype

    JavaScript中的`prototype`是一个核心概念,它涉及到对象继承和函数原型。在JavaScript中,每创建一个函数,该函数就会自动获得一个名为`prototype`的属性,这个属性是一个对象,用于实现对象间的继承。同时,每个...

    javascript编程宝典源代码

    在JavaScript编程中,以下是一些关键知识点: 1. **基础语法**:JavaScript是一种基于原型的弱类型语言,它的基础包括变量声明(var、let、const)、数据类型(如字符串、数字、布尔、null、undefined、对象、数组...

    Javascript面向对象编程.

    2. **原型(Prototype)**:JavaScript中的每个对象都有一个内置的`__proto__`属性,指向其构造函数的原型对象。原型对象可以包含共享的方法和属性,使得实例可以访问。我们也可以通过`prototype`属性来修改构造函数...

    JavaScript使用prototype原型实现的封装继承多态示例

    JavaScript中的prototype是实现原型继承的关键,它允许我们向对象添加方法和属性。下面将详细介绍使用prototype实现封装、继承和多态的概念以及相关的代码示例。 首先,封装是面向对象编程中的一个核心概念,它涉及...

    跟我学习javascript的prototype原型和原型链

    在JavaScript编程语言中,prototype原型和原型链是理解其面向对象特性的核心概念。JavaScript是一种基于原型的语言,它与传统的面向对象语言(如Java或C#)不同,后者是基于类的继承模型。而JavaScript使用原型链来...

    javascript指南和函数式编程

    《Effective JavaScript(中文版).pdf》这本书是JavaScript编程的经典之作,它包含了68个具体的实践建议,涵盖了语言的基础到高级特性。每个建议都通过实例来解释,旨在提高代码的质量和效率。书中的知识点包括但不...

    JavaScript中prototype的使用

    JavaScript中的`prototype`属性是实现面向对象编程的关键概念之一,尤其在JavaScript中,它用于实现对象的继承。本文将深入探讨`prototype`的含义、作用以及如何使用。 1. **什么是prototype** 在JavaScript中,每...

    Advanced JavaScript (closures,prototype,inheritance)

    JavaScript,作为一种广泛应用于Web开发的脚本语言,其高级特性如闭包(closures)、原型(prototype)和继承(inheritance)是理解其精髓的关键。本文将深入探讨这些概念,帮助开发者更好地掌握JavaScript的核心。 ...

    《JAVASCRIPT语言精髓与编程实践》.周爱民PDF

    《JAVASCRIPT语言精髓与编程实践》是周爱民撰写的一本深入解析JavaScript编程的著作,这本书旨在帮助读者理解JavaScript的核心概念,并将其应用于实际的编程实践中。JavaScript,作为全球最广泛使用的脚本语言,是...

    JavaScript 面向对象与原型

    - 但是,如果修改了原型中的方法,所有实例都会受到影响,这可能不是预期的行为。 7. 原型继承: - JavaScript中的继承是通过原型实现的,一个对象可以指向另一个对象作为其原型,从而继承其属性和方法。 - `...

    prototype_oop_javascript_ruby_prototype_

    让我们深入了解一下这两个语言中的原型和面向对象编程。 首先,JavaScript的原型(Prototype)机制: JavaScript是一种基于原型的面向对象语言,它使用对象作为其他对象的蓝图。每个JavaScript对象都有一个内置的`...

Global site tag (gtag.js) - Google Analytics