js中关于prototype学习(2015年1月5号晚)
prototype在js中为原型,只要是对象都有原型,最高原型为Object。
函数作为一特殊的对象,下面探讨prototype(原型)和function(函数)之间的关系。
function A (name){
this.name = name;
this.f1= function(){
alert("这是A的对象方法,每个对象都可以调用"+this.name);
}
}
A.fA=function (){
alert("这是类方法,只用类可以调用,对象不可以调用");
}
//下面使B继承A
function B (name){
this.name = name;
this.f2=function(){
alert("这是B的对象的方法,每个对象都可以调用"+this.name);
}
}
B.fB= function (){
alert("这是B类的方法,对象不可调用");
}
//进行继承操作
B.prototype = A;
下面分别进行调用测试:
1.只对于A函数进行测试:
var a = new A("hello");//创建一个A对象a
//测试分别调用f1()和fA()方法
a.f1();
a.fA();
通过测试可以得出,只用f1()方法执行了,而fA()方法没有被执行。这种形式有点类似java中的类与对象、类方法和对象方法。
f1()是对象方法,只要是A的对象就有这种方法;fA()是类方法,只有类级别的才具用这种方法,此时正确调用方法为A.fA();
ps:类方法只用类可以调用,对象方法只用对象可以调用,类不能调用对象方法,对象不能调用类方法。
2.对B进行测试:
var b = new B("world");//创建B的对象b
//用对象b,分调用f1(),fA(),f2(),fB()
b.f1();
b.fA();
b.f2();
b.fB();
对上面4中方法进行单条测试,通过测试可得出,只用方法fA()、f2()可以执行。
分析:在使用B.prototype=A;时就是声明对象B继承了对象A,这种继承只是继承了A中的fA(),应为fA()为类方法,
对于f2(),fB()前面已经说明完毕,
ps: prototype 在继承中只能继承类级别的方法和属性,不是去笼统的都继承。
js中关于prototype学习(2015年1月5号晚)的更多相关文章
- 论js中的prototype
今天在阅读代码时,碰到了prototype //判断是否是数组function isArray(obj) { return Object.prototype.toString.call(obj) == ...
- JS中childNodes深入学习
原文:JS中childNodes深入学习 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <ti ...
- JS中对于prototype的理解
JS中的prototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个 ...
- 帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
作为一名前端工程师,必须搞懂JS中的prototype.__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞 ...
- JS中的prototype (转载)
JS中的prototype JS中的phototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是 ...
- JS中的prototype、__proto__与constructor属性
作为一名前端工程师,必须搞懂JS中的prototype.__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞 ...
- JS中的prototype、__proto__与constructor
1.前言 作为一名前端工程师,必须搞懂JS中的prototype.__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关 ...
- JS中的prototype、__proto__与constructor(图解)
作为一名前端工程师,必须搞懂JS中的prototype.__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞 ...
- JS中的prototype
JS中的phototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个 ...
随机推荐
- tarjan 边双连通分量 对点进行分组 每组点都在一个双连通分量里边
int dfn[N],low[N],id[N],s[N],p,num,t,son[N];//dfn记录dfs时间戳//low代表当前点到达的最小时间戳,id对点进行分组编号.num是时间戳//s临时存 ...
- LeetCode 58. Length of Last Word
Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the l ...
- Git简单使用
删除本地旧分支,拉取新分支 #!/bin/bash set -e cd /project/ git pull git fetch ori --prune git branch -r|sed 's/or ...
- Hibernate高级查询QBC条件设置——Restrictions用法 引自:http://www.cnblogs.com/evon168/archive/2010/10/29/1863059.html
方法说明 方法 说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge ...
- js中字符串的截取
当需要从一组数据中移除到符合条件的某一个数据的时候,在这种情况下如何进行截取呢? 基本思路: ①将其通过特定的符号,将一组字符串进行拼接,或者用","或者用"+" ...
- Spark1.0源码编译
编译方式一:mavenexport MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"m ...
- DP最长递增字符串
对于最简单DP问题,比如7 9 1 10 3中最长的递增字符串就是7 9 10,所以长度是3. 对于这个问题,就是从第二个开始,让后面的每一个字符都假设作为咱们要找的最长的字符串的最后一个字符,然后从 ...
- jmeter随笔(2)--上传接口报错
黑夜小怪(2016-8-24 23:45) 微信订阅号: 问题:今天同事遇到问题,一个图片上传接口,单独跑是ok的,但是放在和其他接口一起就跑不通,如图 分析:查看该接口fiddler的抓包,发现请 ...
- No.007 Reverse Integer
7. Reverse Integer Total Accepted: 153147 Total Submissions: 644103 Difficulty: Easy Reverse digits ...
- Android四大组件小结
Android四大组件分别为activity.service.content provider.broadcast receiver. 一.android四大组件详解 1.activity (1)一个 ...