javascript中的继承特性

  • 面向对象编程语言分类
    1. 基于类继承:比如java,C++
    2. 基于原型继承:比如javascript
  • 原型继承是动态完成的,添加到原型上的方法会即时生效,即便对象实例在新方法赋予到原型之前已经存在,也能获得新方法
  • javascript没有块作用域,因此不同于C语言尽可能延迟声明变量,在javascript中,应该把所有的局部变量定义放在函数定义的最开始地方
  • 闭包是指外部通过调用一个函数来返回一个对象,虽然这个返回对象自身内部能够访问到它创建时的上下文环境,但暴露给外部调用者时却可以隐藏此上下文
  • javascript能有闭包这一特性,得益于:
    1. 函数可以嵌套,外层函数可以在内部嵌套子函数
    2. 函数作用域,外层函数定义的变量,内层函数可以访问到,反过来不成立
    3. 在函数块外,不能访问到函数块内部定义的任何局部变量
    4. 函数可以返回一个简单类型,一个字面量对象,或者是一个函数
    5. 要成功使用闭包,外层必须先要有一个函数,该函数最终返回一个授权函数
  • 使用闭包,最主要是希望模拟出类似于java中类的私有private属性(方法)的操作,这在面向对象以及模块开发方面有重要意义
  • 早期的javascript,只是作为运行在浏览器环境下的,支持客户端动态交互的一种脚本语言,所以全局变量不是个大问题
  • 但随着javascript越来越多的用在前端框架上(如ember),甚至服务端(如NodeJS),面向对象和模块开发成了必然选择
  • 当构造器中的参数很多的情况下,可以使用JSON定义的对象字面量方式传入,这种方式构造对象的好处是
    1. 参数的可扩展性
    2. 不依赖参数顺序
    3. 允许参数默认值
  • 在js继承模式的道路上,一路走来,我们有下面两种方式
    1. 通过new构造器+指定原型prototype对象,但这种方式无法真正实现数据隐藏和封装,因此也就不能做到保护对象完整性
    2. 通过json对象字面量构造参数+闭包,由于闭包这种方式能真正隐藏私有数据和属性,因此可以做到对象的完整性保护
时间: 2024-10-01 02:52:56

javascript中的继承特性的相关文章

javascript 中各种继承方式的优缺点 (转)

javascript中实现继承的方式有很多种,一般都是通过原型链和构造函数来实现.下面对各种实现方式进行分析,总结各自的优缺点. 一 原型继承 let Super = functioin(name) { this.name = name; this.setName = (newName) => { this.name = name; }; this.getName = () => { return this.name; } } let Sub = function(sex) { this.se

JavaScript学习13 JavaScript中的继承

JavaScript学习13 JavaScript中的继承 继承第一种方式:对象冒充 <script type="text/javascript"> //继承第一种方式:对象冒充 function Parent(username) //父类对象 { this.username = username; //下面的代码最关键的部分就是将子对象的this传递给了父对象 this.sayHello = function() { alert(this.username); } } f

JavaScript中的继承(原型链)

一.原型链 ECMAScript中将原型链作为实现继承的主要方法,基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法. 实例1: function SupType() { this.property = true; } SupType.prototype.getSupvalue = function() { return this.property; }; function SubType() { this.subproperty = false; } //原型对象等于一个类型的实例

JavaScript中的继承机制

JavaScript到底是不是面向对象的?! 有人说是,有人说基于对象更准确,因为JavaScript没有类.不去管它,但JavaScript确实提供了一些面向对象的机制. 本文主要讨论JavaScript中的继承.继承,简单来说,就是让子类获得父类的属性和方法,以达到共享和复用的目的. 在开始继承之前,首先需要创建父类.为了后续讨论的需要,我分别为父类创建了私有对象.实例对象.引用对象和两个实例方法. 创建父类的代码如下: // 父类实例的构造函数 function Pet(name,soun

javascript 中实现继承的六种方式

javascript 中对于继承的描述: 许多面向对象语言都支持两种继承的方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.在 javascript 中由于函数没有签名也就无法实现接口继承,而只支持实现继承,而且实现继承主要通过原型链来实现的. 先引述下官方文档对于原型链的描述:其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法.要理解这个概念要先弄清楚构造函数,原型,和实例的关系:每个构造函数(只要是函数)都有一个 prototype 属性该属性指向一

javascript中实现继承的几种方式

javascript中实现继承的几种方式 1.借用构造函数实现继承 function Parent1(){ this.name = "parent1" } function Child1(){ Parent1.call(this); this.type = "child1"; } 缺点:Child1无法继承Parent1的原型对象,并没有真正的实现继承(部分继承) 2.借用原型链实现继承 function Parent2(){ this.name = "p

JavaScript中的继承与原型链

先看一个例子 function User(){} var u1 = new User(); console.log(u1.prototype);// undefined 使用对象实例无法访问到prototype console.log(User.prototype);//{},使用构造函数名访问prototype console.log(u1.__proto__);//{},使用对象实例访问prototype的指针 这个是 __proto__ 和prototype最基本的区别:说明构造的对象无p

JavaScript中的继承实现(1)

前言:学习过面向对象语言(java.c++)的童鞋都了解面向对象的概念,也肯定知道面向对象语言的特征:封装.继承和多态,但JavaScript并非面向对象,而是基于对象,这些概念我们无法直接应用到JavaScript的对象机制中,这节我们主要学习JavaScript开发者是如何曲线救国实现面向对象语言的继承特性. 1.类的概述? 类:类是面向对象语言的基础.类好比模型,比如说动物是一个类别很空泛不具体,拥有很多的特征,但是我们具体不知道它是会飞.爬.游. 对象:那么对象好比是类的一个具体体现,比

JavaScript中的继承

在JavaScript中没有Java中的exends关键字,只能通过其他的方式来实现继承关系. 1) 对象冒充 1 function Parent(username) 2 { 3 this.username = username; 4 5 this.sayHello = function() 6 { 7 alert(this.username); 8 } 9 } 10 11 function Child(username, password) 12 { 13 //下面三行代码是就是实现了Chil