`
linhui_dragon
  • 浏览: 155925 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

JS如何创建对象及实现继承

 
阅读更多
JS如何创建对象及实现继承




【原型】
1. 什么是原型?
    我们创建的每一个函数都有一个prototype(原型)属性,这个属性是一个对象,
它的用途是包含有特定类型的所有实例共享的属性和方法。

2. 只要创建了一个新函数,就会为该函数创建一个prototype属性。
在默认情况下,所有prototype属性都会自动获得一个constructor(构造函数)属性,
这个属性包含一个指向prototype属性所在函数的指针。
这样,函数及函数原型之间形成了循环指向。

3. 每当调用构造函数创建一个新实例后(即"new constructor()"这样的形式),
该实例的内部将包含一个指针(一般名为__proto__),指向构造函数的原型属性。



【创建】
组合使用构造函数和原型模式
特点:
实例属性在构造函数中定义
共享属性和共享方法在原型中定义


function Person(name) {

    this.name = name;

}

Person.prototype = {

    constructor: Person,    //强制声明构造函数,默认是Object

    sayName : function() {

        alert(this.name);

    }

}

var Person1 = new Person("king");


【继承】
组合继承模式




//父类

function SuperType(name) {

    this.name = name;

}

SuperType.prototype.sayName = function() {

    alert(this.name);

};

//子类

function SubType(name, age) {

    SuperType.call(this, name);     //继承父类的属性

    this.age = age;

}

SubType.prototype = new SuperType();    //继承父类方法

SubType.prototype.sayAge = function() {

    alert(this.name);

};

var SubType1 = new SubType("king", 88); 



call(obj [, args])方法的含义:我们知道,在面向对象的语言中,对象的方法通常有一个隐藏的参数this,用来指明具体的对象。

在js中,call方法实现了上面的效果,A.x.call(B)实际上是指在B对象上调用方法x。

与call方法类似的还有apply方法,两者的不同是apply只有两个参数,第一个参数与call相同,第二个参数是一个参数数组。


========================================

PS: new操作符创建实例的过程
1. 创建一个新对象
2. 将构造函数的作用于赋给新对象(因此this就指向了这个新对象)
3. 执行构造函数的代码(为这个新对象添加属性)
4. 返回新对象
分享到:
评论

相关推荐

    学习javascript面向对象 javascript实现继承的方式

    通过使用apply()和call()方法,可以在将来新创建的对象上执行构造函数,从而实现继承。 优点: - 可以向超类型构造函数传递参数。 缺点: - 无法实现函数复用。 - 在超类型的原型中定义的方法,对子类型而言也是不...

    javascript创建对象、对象继承的有用方式详解_.docx

    本文将深入探讨 JavaScript 中创建对象及对象继承的各种有效策略,特别是如何利用构造函数模式、原型模式以及寄生组合式继承等技术来构建灵活、高效的应用程序。 #### 二、JavaScript 对象与原型 在 JavaScript 中...

    js javascript zInherit 对象 继承

    总的来说,`zInherit`是JavaScript对象继承的一种实现,它利用原型链实现继承关系,使得子类可以继承和扩展父类的属性和方法。理解并熟练掌握这种继承方式,对于深入理解JavaScript的OOP特性以及编写高效的代码至关...

    jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承

    构造函数用于创建具有特定属性和方法的新对象,而原型链则是JavaScript用来实现继承的一种方式。在JavaScript中,每个对象都链接到一个原型对象,并从原型对象继承属性和方法。当尝试访问对象的某个属性或方法时,...

    浅谈js对象的创建和对6种继承模式的理解和遐想

    在JavaScript中创建对象和实现继承是开发过程中非常重要的知识点。本文将探讨JavaScript中对象的创建方式以及六种常见的继承模式,包括原型链继承、借用构造函数继承、组合继承、原型式继承、寄生式继承以及寄生组合...

    浅析JavaScript实现基于原型对象的“继承”.pdf

    JavaScript还可以通过原型对象来实现继承。 原型对象 在JavaScript中,每个函数对象都有一个prototype属性,该属性指向函数的原型对象。原型对象是一个对象,它包含了构造函数的所有实例对象所共享的属性和方法。...

    javascript 原生态js类继承实现的方式

    我们还知道,面向对象编程有三个重要的概念 - 封装、继承和多态。 但是在JavaScript的世界中,所有的这一切特性似乎都不存在。 因为JavaScript本身不是面向对象的语言,而是基于对象的语言。

    js继承的实现

    js没有特别明确的实现如何继承,但是能够通过特殊手段实现继承的,有四种方法

    js定义类 对象 构造函数,类的继承

    通过分析这个文件,我们可以看到实际应用中的类定义和继承实践,包括如何定义类,如何使用构造函数初始化对象,以及如何通过`extends`关键字实现类的继承和覆盖或扩展父类的方法。 总结一下,JavaScript的类、对象...

    JavaScript实现继承的几种方式

    本篇文章将深入探讨JavaScript中实现继承的几种常见方式。 1. 原型链继承 JavaScript的原型(prototype)机制是实现继承的基础。每个函数都有一个prototype属性,这个属性指向一个对象,这个对象的属性和方法可以被...

    JavaScript学习之三 — JavaScript实现继承的7种方式

    使用`Object.create()`方法可以创建一个新对象,其`__proto__`属性指向指定的对象,从而实现继承。这是一种更简洁、更纯粹的继承方式,但同样不支持方法的继承。 4. 组合继承(Composite Inheritance) 组合继承...

    js继承实现示例代码

    JavaScript的原型链机制是实现继承的基础。每个函数都有一个`prototype`属性指向一个原型对象,该原型对象包含特定类型的实例共享的所有属性和方法。当尝试访问一个对象的属性时,如果对象本身没有这个属性,...

    js对象,五种继承 详细讲解

    在JavaScript中,对象的定义和继承是核心概念。本文将深入探讨JavaScript的五种对象定义方法以及五种继承方式。 1. **对象定义方法** - **字面量语法**:最直接的方法是使用花括号`{}`创建对象,如`var obj = {...

    JavaScript面向对象继承详解

    每个JavaScript对象都有一个内部的[[Prototype]]属性,通常可以通过`__proto__`或`Object.getPrototypeOf`访问。当试图访问对象的一个属性时,如果该属性不存在于当前对象,JavaScript会向上搜索原型链,直到找到该...

    【JavaScript的9种继承实现方式归纳】js实现继承的几种方式.pdf

    JavaScript 的灵活性使得其实现继承的方式非常多样化。本文将介绍 JavaScript 中的 9 种继承实现方式,帮助读者更好地理解 JavaScript 的继承机制。 1. 原型链继承 原型链继承是 JavaScript 中实现继承的默认方式。...

    Javascript面向对象编程.

    5. **继承(Inheritance)**:JavaScript通过原型链实现继承。子类的原型会指向父类的实例,从而继承其属性和方法。ES6的`class`语法也支持`extends`关键字进行继承。 ```javascript class Employee extends ...

    JS面向对象经典案例

    在JavaScript中,我们可以使用原型链来实现继承。例如,我们可以使用以下代码来创建一个Employee对象,它继承自Person对象: ```javascript function employee(name, money) { person.call(this, name); this....

    js 面向对象实例

    每个JavaScript对象都有一个`__proto__`属性,指向创建该对象的构造函数的原型。原型对象也是一个对象,可以通过`prototype`属性来访问。我们可以在原型上定义方法,这样所有实例都可以访问这些方法: ```...

    js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式).docx

    在 JavaScript 中,可以通过编写一个函数来实现这种模式,该函数负责以特定接口创建对象的细节。以下是示例代码: ```javascript function createPerson(name, sex, age) { var obj = new Object(); obj.name = ...

    JavaScript面向对象技术实现树形控件

    面向对象编程的三大核心概念——继承、封装和多态性,在JavaScript中都能找到相应的实现方式。 1. **继承与封装**:JavaScript的继承是基于原型(Prototype)的,而不是类。这意味着一个对象可以直接继承另一个对象...

Global site tag (gtag.js) - Google Analytics