- 浏览: 148965 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (137)
- JavaScript (23)
- get post (0)
- SSH (4)
- Hibernate (1)
- cmd (2)
- 火狐 IE (1)
- 中英文环境模板下载 (1)
- 日期 (0)
- 其他总结 (5)
- 正则校验 (3)
- Sql Server (0)
- FreeMarker (1)
- 继承 (1)
- SQL (2)
- ORACLE -- SQL Server -- Access 常见Sql语句的区别 (1)
- ORACLE -- SQL Server -- Access 常见Sql语句的区别 (0)
- 解决int和Integer不能互转 (0)
- 原子类 (1)
- Final,finally,finalize的区别 (1)
- Web前端 (12)
- Reader InputStream (1)
- 线程 (1)
- JDBC (1)
- AJAX (3)
- Linux (2)
- 素数 (1)
- 接口-----继承 (1)
- 数据库查询性能优化 (1)
- Spring MVC3 深入了解 (1)
- JS (18)
- log4j简介 (1)
- Java序列化的机制和原理 (0)
- allowTransparency属性 (1)
- 测试类 (1)
- CSS (14)
- JQuery (10)
- 多线程 (1)
- 数据库 (2)
- Spring 注解 (1)
- JSTL标签库 (1)
- HTML (8)
- 界面设计 (4)
- 测试 (4)
- 职业生涯 (1)
- 数据可视化 (1)
- UI设计 (3)
- eclipse怎样生成javadoc (2)
- redis memcache 比较 (1)
- Windows 8系统IE10无法安装Flash Player插件的解决办法 (1)
- IE7 问题 (1)
- 常用JS验证 (1)
- Hadoop,MapReduce学习步骤 (1)
- 开始-运行-命令大全 (1)
- jQuery与ExtJS优缺点比较 (1)
- Oracle (1)
- 文档转换 (1)
- Maven与Ant比较 (1)
最新评论
-
谁说我不是会员:
很给力的文章,通俗易懂
Get请求和Post请求的区别 -
Spirit_eye:
请问一个图片按钮怎么置灰
按钮置灰跟按钮不显示
JS如何创建对象及实现继承
【原型】
1. 什么是原型?
我们创建的每一个函数都有一个prototype(原型)属性,这个属性是一个对象,
它的用途是包含有特定类型的所有实例共享的属性和方法。
2. 只要创建了一个新函数,就会为该函数创建一个prototype属性。
在默认情况下,所有prototype属性都会自动获得一个constructor(构造函数)属性,
这个属性包含一个指向prototype属性所在函数的指针。
这样,函数及函数原型之间形成了循环指向。
3. 每当调用构造函数创建一个新实例后(即"new constructor()"这样的形式),
该实例的内部将包含一个指针(一般名为__proto__),指向构造函数的原型属性。
【创建】
组合使用构造函数和原型模式
特点:
实例属性在构造函数中定义
共享属性和共享方法在原型中定义
【继承】
组合继承模式
call(obj [, args])方法的含义:我们知道,在面向对象的语言中,对象的方法通常有一个隐藏的参数this,用来指明具体的对象。
在js中,call方法实现了上面的效果,A.x.call(B)实际上是指在B对象上调用方法x。
与call方法类似的还有apply方法,两者的不同是apply只有两个参数,第一个参数与call相同,第二个参数是一个参数数组。
========================================
PS: new操作符创建实例的过程
1. 创建一个新对象
2. 将构造函数的作用于赋给新对象(因此this就指向了这个新对象)
3. 执行构造函数的代码(为这个新对象添加属性)
4. 返回新对象
【原型】
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. 返回新对象
发表评论
-
web前端页面性能优化小结
2014-04-25 10:21 581web前端页面性能优化小 ... -
jQuery与ExtJS优缺点比较
2014-03-18 11:36 1991jQuery与ExtJS优缺点比较 jQuery 主页:h ... -
LABjs、RequireJS、SeaJS 哪个最好用?为什么?
2014-03-14 11:15 553LABjs、RequireJS、SeaJS 哪 ... -
offsetHeight, clientHeight与scrollHeight的区别
2014-01-22 14:24 628offsetHeight, clientHeight与scro ... -
表单提交后不刷新当前页面
2014-01-17 15:28 1206<form name='form1' id='for ... -
input失去焦点和获得焦点jquery焦点事件
2014-01-17 14:47 950input失去焦点和获得焦点jquery焦点事件 input ... -
html5 在IE6/IE7/IE8中使用html5标签
2014-01-13 11:26 4949html5 在IE6/IE7/IE8中使用html5标签 h ... -
李炎恢--JS视频
2013-05-21 15:40 750李炎恢--JS视频 http://wenku.baidu.co ... -
SeaJS-----GitHub Issues
2013-05-20 16:17 720SeaJS 是直接通过 GitHub Issues 来管理, ... -
CMD 模块定义规范
2013-05-15 10:45 300CMD 模块定义规范 https://github.co ... -
Javascript模块化编程(三):require.js的用法
2013-05-15 10:44 485Javascript模块化编程(三):require.js的 ... -
Sea.js 手册与文档
2013-05-15 09:30 553Sea.js 手册与文档 http://www.zhang ... -
sea.js 小记
2013-05-14 11:38 746sea.js 小记 看目录结构,代码不算多,命名划分很清晰, ... -
jQuery 实现多级下拉菜单导航
2013-03-13 11:39 4851JavaScript 实例教程 – jQuery 实现多级下拉 ... -
JS睡眠function
2013-03-05 11:37 1774JS睡眠function function sle ... -
iframe高度动态自适应
2013-03-04 14:37 564iframe高度动态自适应 http://www.cnbl ... -
js继承的几种实现方法
2013-03-04 13:40 637js继承的几种实现方法 [size=x-small]&l ... -
打印页面指定区域的js源码
2012-12-05 14:44 643<script type="text/ ... -
一道基础例题的思考
2012-12-05 14:30 633引用 <script type="text/j ... -
pager-taglib -- 分页标签用法
2012-08-09 10:10 757pager-taglib -- 分页标签用法 Usin ...
相关推荐
我们还知道,面向对象编程有三个重要的概念 - 封装、继承和多态。 但是在JavaScript的世界中,所有的这一切特性似乎都不存在。 因为JavaScript本身不是面向对象的语言,而是基于对象的语言。
js没有特别明确的实现如何继承,但是能够通过特殊手段实现继承的,有四种方法
Javascript面向对象特性实现(封装、继承、接口 Javascript面向对象特性实现(封装、继承、接口
本文实例为大家介绍了javascript实现继承的6种方式,分享给大家供大家参考,具体内容如下 1、【原型链继承】实现的本质是重写原型对象,代之以一个新类型的实例。实际上不是SubType的原型的constructor属性被重写了...
javaScript面向对象继承方法经典实现.docx
JavaScript中的对象是基于原型的。原型是对象的基础,它定义并实现了一个新对象所必须包含的成员列表,并被所有同类对象实例所共享。...本文着重给大家介绍javascript创建对象、对象继承的实用方式
浅析JavaScript实现基于原型对象的“继承”.pdf
本文实例讲述了javascript使用Blob对象实现的下载文件操作。分享给大家供大家参考,具体如下: Blob对象 前言 环境 操作 总结 Blob是一个类文件的不可变的原始数据对象,非javascript原生数据类型,File对象...
js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式 1. 使用对象冒充实现继承(该种实现方式可以实现多继承)...
js面向对象方法实现拖拽,同时应用了继承,适合初学js面向对象知识的同学
构造函数定义对象+prototype继承的实现,含CSS样式
JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在... 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库
《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的..., 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库。
笔者历经多年javascript的开发,痛彻体会javascript面向对象编程的不便性,精心制作了一个类的定义与继承功能的js,实现了在javascript中对类的定义、继承、封装机制,主要功能特征包括: 一、 统一了类定义的语法...
主要介绍了Javascript中对象继承的实现,需要的朋友可以参考下
javascript做为一门脚本语言,但面向对象思想在其中也有体现,本文档阐述和总结了js中继承的实现,及个方法的利弊!
主要介绍了Javascript简单实现面向对象编程继承实例代码,简单分析了面向对象程序设计的特征与继承的具体实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
JS类的继承的实现</title> [removed] //定义父类及公有、私有、静态属性及方法 function parent(){ var pname = "private";//私有属性 var pfun = function(){//私有方法 console.log("调用类的私有方法"); } ...
使用纯 JavaScript 实现对象继承的简单而小巧的实现。 安装 去做 NPM: $ npm install --save inheritance-js Bower: $ bower install --save inheritance-js 下载: (最新) 特征 添加到使用ObjectDefinition....