- 浏览: 1112926 次
文章分类
- 全部博客 (379)
- S2SH (16)
- stuts2 (0)
- java语言 (81)
- JSP (17)
- <html>元素 (11)
- javaweb (4)
- web容器 (3)
- ext (23)
- javaScript (48)
- ant (1)
- liferay (1)
- sql (9)
- css (42)
- 浏览器设置 (3)
- office_world (1)
- eclipse (4)
- 其它 (28)
- 操作系统 (5)
- android (6)
- Struts2 (11)
- RegEx (3)
- mysql (5)
- BigDATA (1)
- Node.js (1)
- Algorithm (10)
- Apache Spark (1)
- 数据库 (5)
- linux (2)
- git (1)
- Adobe (3)
- java语言,WebSocket (1)
- Maven (3)
- SHELL (1)
- XML (2)
- 数学 (2)
- Python (2)
- Java_mysql (1)
- ReactJS (6)
- 养生 (4)
- Docker (1)
- Protocols (3)
- java8 (2)
- 书籍 (1)
- Gradle (2)
- AngularJS (5)
- SpringMVC (2)
- SOAP (1)
- BootstrapCSS (1)
- HTTP协议 (1)
- OAuth2 (1)
最新评论
-
Lixh1986:
Java并发编程:自己动手写一把可重入锁https://blo ...
Java之多线程之Lock与Condition -
Lixh1986:
http://win.51apps.com.cn/https: ...
temp -
ztwsl:
不错,支持很好
HttpServletRequest和ServletRequest的区别 -
guodongkai:
谢谢您能将知识精华汇编总结,让初学者们从原理中学会和提高。
javaScript之function定义 -
kangwen23:
谢谢了,顶顶
struts2中的ValueStack学习
JS中的phototype是JS中比较难理解的一个部分
一、知识点
本文基于下面几个知识点:
1. 原型法设计模式
原型法的主要思想是:
现在有一个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展。
我们称B的原型为A。
2. javascript的方法可以分为三类:
1) 类方法
2) 对象方法
3) 原型方法
例子:
二、正式开始
1、prototype是什么含义?
Javascript中的每个对象都有prototype属性。
Javascript中对象的prototype属性的解释是:返回 “对象原型” 的引用。
2、什么是函数的“对象原型”(prototype)?
Function.prototype 属性可以被使用 new 关键字创建的 Function 的实例所继承。
Function.prototype 属性不能被删除。
prototype 不应与继承混淆:
A.prototype = new B();
A 的 prototype 为 B 的一个实例,可以理解A将B中的方法和属性全部克隆了一遍。
A 能使用 B 的方法和属性,这里强调的是克隆而不是继承。
可以出现这种情况:
A 的prototype是 B 的实例,同时 B 的prototype也是 A 的实例。
例子:
首先定义 Base 类。
然后定义 Extended,以 Base 的一个实例作为 Extended 的函数原型。
那么就会有一个问题,如果extendClass中本身包含有一个与baseClass的方法同名的方法会怎么样?
下面是扩展实验2:
实验证明:函数运行时会先去本体的函数中去找,如果找到则运行。找不到则去prototype中寻找函数。
那么又会有一个新的问题:
如果我想使用 Extended 的一个实例 instance 调用 Base 的方法showMsg怎么办?
答案是可以使用 call:
下面这个代码如果理解清晰,那么对“类方法、原型方法、对象方法”就已经理解了:
函数的 prototype 对象,是一个普通的对象。
函数的 prototype 对象,不是函数对象,不具有函数对象的 prototype 属性。
三、面向对象编程:prototype 中的 function 与 this
prototype 既然是用来共享于函数的实例之间,
那么在 prototype 的 function 类型中使用 this 是面向对象编程不可缺少的实现。
因为 this 总是指向 function 的不同实例。但是可以只写一次 this。
—————————————
javascript 函数基础系列文章
1、JavaScript之变量的作用域
2、javascript之变量类型与变量声明及函数变量的运行机制
3、javaScript之function定义
4、javascript之function的prototype对象
5、javascript之function的(closure)闭包特性
6、javascript之function的this
7、javascript之function的apply(), call()
___________
javascript 面向对象编程系列文章:
1、javaScript之面向对象编程
2、javascript之面向对象编程之属性继承
3、javascript之面向对象编程之原型继承
-
转载请注明,
原文出处:http://lixh1986.iteye.com/blog/1896682
--
引用地址:
http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html
-
一、知识点
本文基于下面几个知识点:
1. 原型法设计模式
原型法的主要思想是:
现在有一个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展。
我们称B的原型为A。
2. javascript的方法可以分为三类:
1) 类方法
2) 对象方法
3) 原型方法
例子:
function People(name){ this.name=name; //对象方法 this.Introduce=function(){ console.log("My name is "+this.name); } } //类方法 People.Run=function(){ console.log("I can run"); } //原型方法 People.prototype.IntroduceChinese=function(){ console.log("我的名字是"+this.name); } //测试 var p1=new People("Windking"); p1.Introduce(); People.Run(); p1.IntroduceChinese();
二、正式开始
1、prototype是什么含义?
Javascript中的每个对象都有prototype属性。
Javascript中对象的prototype属性的解释是:返回 “对象原型” 的引用。
2、什么是函数的“对象原型”(prototype)?
Function.prototype 属性可以被使用 new 关键字创建的 Function 的实例所继承。
Function.prototype 属性不能被删除。
prototype 不应与继承混淆:
A.prototype = new B();
A 的 prototype 为 B 的一个实例,可以理解A将B中的方法和属性全部克隆了一遍。
A 能使用 B 的方法和属性,这里强调的是克隆而不是继承。
可以出现这种情况:
A 的prototype是 B 的实例,同时 B 的prototype也是 A 的实例。
例子:
function Base(){ this.showMsg = function(){. console.log("Base::showMsg"); } } function Extended(){} Extended.prototype = new Base(); var instance = new Extended(); instance.showMsg(); // 显示 Base::showMsg
首先定义 Base 类。
然后定义 Extended,以 Base 的一个实例作为 Extended 的函数原型。
那么就会有一个问题,如果extendClass中本身包含有一个与baseClass的方法同名的方法会怎么样?
下面是扩展实验2:
function Base(){ this.showMsg = function(){ console.log("Base::showMsg"); } } function Extended(){ this.showMsg =function (){ console.log("Extended::showMsg"); } } Extended.prototype = new Base(); var instance = new Extended(); instance.showMsg(); //显示:Extended::showMsg
实验证明:函数运行时会先去本体的函数中去找,如果找到则运行。找不到则去prototype中寻找函数。
那么又会有一个新的问题:
如果我想使用 Extended 的一个实例 instance 调用 Base 的方法showMsg怎么办?
答案是可以使用 call:
Extended.prototype = new Base(); var extend = new Extended(); var base = new Base(); base.showMsg.call(extend); //显示:Base::showMsg
下面这个代码如果理解清晰,那么对“类方法、原型方法、对象方法”就已经理解了:
// //Base function Base(name){ this.name = name || "BASE"; this.showMsg = function(){ console.log(this.name, "::showMsg"); } this.baseShowMsg = function(){ console.log(this.name, "::baseShowMsg"); } } Base.showMsg = function(){ console.log(this.name, "::showMsg static"); } Base.prototype.protoShowMsg = function(){ console.log(this.name, "::protoShowMsg"); } // //Extended function Extended(name){ this.name = name || "Extended"; this.showMsg =function (){ console.log(this.name, "::showMsg"); } } Extended.showMsg = function(){ console.log(this.name, "::showMsg static"); } Extended.prototype = new Base(); //Test var base= new Base(); var extended = new Extended(); extended.showMsg(); //显示: Extended ::showMsg extended.baseShowMsg(); //显示: Extended ::baseShowMsg extended.protoShowMsg(); //显示: Extended ::protoShowMsg Base.showMsg.call(extended); //显示: Extended ::showMsg static base.showMsg.call(extended); //显示: Extended ::showMsg //
函数的 prototype 对象,是一个普通的对象。
函数的 prototype 对象,不是函数对象,不具有函数对象的 prototype 属性。
三、面向对象编程:prototype 中的 function 与 this
prototype 既然是用来共享于函数的实例之间,
那么在 prototype 的 function 类型中使用 this 是面向对象编程不可缺少的实现。
因为 this 总是指向 function 的不同实例。但是可以只写一次 this。
// var Person = function(name) { this.name = name; }; Person.prototype.getName = function() { // use "this" in prototype. return this.name; }; //test var john = new Person("John"); console.log(john.getName()); // John var Tomi = new Person("Tomi"); console.log(Tomi.getName()); // Tomi
—————————————
javascript 函数基础系列文章
1、JavaScript之变量的作用域
2、javascript之变量类型与变量声明及函数变量的运行机制
3、javaScript之function定义
4、javascript之function的prototype对象
5、javascript之function的(closure)闭包特性
6、javascript之function的this
7、javascript之function的apply(), call()
___________
javascript 面向对象编程系列文章:
1、javaScript之面向对象编程
2、javascript之面向对象编程之属性继承
3、javascript之面向对象编程之原型继承
-
转载请注明,
原文出处:http://lixh1986.iteye.com/blog/1896682
--
引用地址:
http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html
-
发表评论
-
Javascript 测试框架之 隐式声明 之 describe
2019-06-25 15:26 2590为什么使用 javascript 测试框架时,没有显式导入 d ... -
JavaScript之ECMAScript6新特性之_03_箭头函数(Arrow Function)
2018-01-25 13:46 1118一、简介 箭头函数(Arrow Function)是 ES6 ... -
JavaScript之ECMAScript6新特性之_02_线程异步阻塞: Promise, Async / await
2018-01-12 16:51 2326刚出来不久的 ES8 包含了 async 函数,它的出现,终于 ... -
JavaScript之ECMAScript6新特性之_01_开篇
2017-08-17 02:54 603点此查看全部: http://es6-features.org ... -
jQuery Versions - browser support
2017-08-12 04:19 1617jQuery 3.2.1 Support Deskto ... -
基于HTML5实现的中国象棋游戏
2017-06-24 02:24 1688HTML5实现中国象棋游戏 http://www.w2bc.c ... -
JavaScript之跨域请求解决方案
2017-06-07 11:03 3972浏览器处于安全原因,在使用 Ajax 进行请求访问时,不允许跨 ... -
JavaScript之 25 道面试题
2017-04-17 17:05 95525 Essential JavaScript Intervi ... -
JavaScript小应用之分页算法
2017-03-16 12:56 666效果图: function getPagina ... -
jQuery之empty() VS. remove()
2017-03-16 10:32 722jQuery empty() vs remove() Wh ... -
jQuery之 prop() VS. attr()
2017-03-14 16:43 660attr() 用于自定义属性,id ; prop() 用于 ... -
jQuery之mouseover,mouseover,mouseout,mouseleave
2017-03-14 10:20 655Jquery mouseenter() vs mouseove ... -
javascript之JS操作iframe
2017-02-28 14:56 2194JS操作iframe 1. 获得iframe的w ... -
javascript之面向对象编程之原型继承
2017-01-02 15:34 1127前文讲到“属性继承” ... -
HTML5之Cookie,localStorage 与 sessionStorage
2016-12-22 18:35 844详说 Cookie, LocalStorage 与 ... -
jquery之live(), delegate(), on() 方法
2016-11-26 23:48 928通过下面的一个实例理解 jQuery 的 live(), de ... -
javascript之小应用:网页在线聊天
2016-11-08 11:48 4297概览 这款使用 PHP 和 javascript 搭建的 ... -
javascript之编程序题目
2016-11-06 17:30 10531. 判断两个字符串是否:字母相同切长度相同(空格不算)。 ... -
javascript之面向对象编程之属性继承
2016-10-23 21:09 914函数继承可以分为两种:1、继承其 this 属性 2、继承其 ... -
javascript 之 undefined
2016-08-12 11:01 710一、用法 undefined 关键字有两种用法: 1. 如 ...
相关推荐
JavaScript中的`prototype`是一个核心概念,它涉及到对象继承和函数原型。在JavaScript中,每创建一个函数,该函数就会自动获得一个名为`prototype`的属性,这个属性是一个对象,用于实现对象间的继承。同时,每个...
JavaScript 使用 prototype 定义对象类型 在 JavaScript 中,prototype 是一个非常重要的概念,它提供了一套面向对象编程的基础设施,允许开发者定义对象类型和实现继承。下面我们将详细介绍如何使用 prototype ...
### JavaScript Prototype 对象扩展 #### 一、简介与背景 在JavaScript中,`prototype`是一个非常重要的概念,尤其是在面向对象编程(OOP)方面。通过利用`prototype`,开发者能够更高效地管理对象间的共享属性和...
JavaScript中的`prototype`是理解面向对象编程的关键概念之一。它是一种机制,允许对象共享属性和方法,从而实现代码复用。在JavaScript中,每个函数(包括构造函数)都有一个内置的`prototype`属性,这个属性指向一...
6. **Class与Object继承**:Prototype.js 引入了面向对象的概念,实现了类(Class)和对象继承,使得JavaScript具备了更接近传统面向对象语言的编程模式。 7. **JSON支持**:随着JSON成为数据交换的主流格式,...
每个函数就是一个对象(Function),函数对象都有一个子对象 prototype对象,类是以函数的形式来定义的。prototype表示该函数的原型,也表示一个类的成员的集合。 在通过new创建一个类的实例对象的时候,...
2. **构造函数、原型与实例**:构造函数(如`Function`、`Object`等)用于创建新的对象,每个构造函数都有一个`prototype`属性,这个属性是一个对象,用于存储共享的方法和属性。当我们使用`new`关键字创建新对象时...
### JavaScript面向对象进阶知识点详解 #### 8.1 面向对象编程的基本特性 在探讨面向对象的JavaScript之前,我们首先需要了解面向对象编程(Object-Oriented Programming, OOP)的基本特性:封装性、抽象性、继承...
在提供的资源中,《代码之美》PDF文件可能包含了关于编程实践和代码风格的指导,而《Javascript面向对象编程》PPT可能更具体地阐述了JavaScript OOP的细节和示例。学习这些材料将有助于深入理解JavaScript的面向对象...
JavaScript中的prototype属性是理解面向对象编程的关键概念之一。在JavaScript中,每个函数都有一个prototype属性,这个属性指向一个对象,这个对象就是所谓的原型对象。当我们创建一个函数实例时,实例会自动获取一...
原型是什么 Function 类型有一个属性 prototype,直接翻译过来就是原型。这个属性就是一个指针,指向一个对象,这个...先创建了一个 Function 类型的实例 person,然后 person 的方法 prototype 是一个对象,就声明指
Prototype是最早的JavaScript框架之一,对DOM操作有着深入的优化。其关键特性包括: 1. **$()选择器**:Prototype使用`$()`作为基本选择器,类似于jQuery,但功能略有不同。 2. **Prototype对象**:扩展了...
利用`function`作为类的定义、`new`操作符创建对象、以及`this`和`prototype`来模拟类的特性和行为,可以有效地提高代码的可读性和可维护性。通过深入理解这些概念,开发者可以更好地利用JavaScript的强大功能来构建...
### JavaScript面向对象...JavaScript的独特之处在于它的灵活性和动态性,这使得它成为了一种非常强大的工具,适用于各种不同的应用场景。随着ES6及更高版本标准的引入,JavaScript的面向对象能力得到了进一步增强。
2. **对象创建与原型Prototype**: JavaScript使用`new`关键字创建对象实例,原型链允许对象间共享属性和方法,`__proto__`或`prototype`属性是理解这一机制的关键。 3. **函数对象Function**: 在JavaScript中,函数...
JavaScript,作为一种广泛应用于Web开发的动态脚本语言,最初被设计为简单的客户端脚本语言,但随着技术的发展,它已经发展出了丰富的面向对象编程(OOP)特性。面向对象JavaScript开发是现代Web开发中不可或缺的一...
JavaScript中的`prototype`属性是实现面向对象编程的关键概念之一,尤其在JavaScript中,它用于实现对象的继承。本文将深入探讨`prototype`的含义、作用以及如何使用。 1. **什么是prototype** 在JavaScript中,每...
本文实例讲述了JavaScript通过prototype给对象定义属性的用法。分享给大家供大家参考。具体分析如下: 下面的JS代码定义了movie对象。在使用对象的过程中又通过prototype给对象添加了isComedy属性,调用的时候直接...
标题 "prototype_oop_javascript_ruby_prototype_" 暗示了我们将探讨的是关于原型(Prototype)面向对象编程(Object-Oriented Programming, OOP)的概念,主要关注JavaScript和Ruby这两种语言之间的相似性和差异性...