首页 > 代码库 > js中关于prototype学习(2015年1月5号晚)
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继承Afunction 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号晚)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。