javascript 原型链方式(prototype)
------------------------------原型链方式(prototype)继承父类的所有方法 ,而 call方式为克隆this调用方式---------------------
function sayColor(sPrefix, sSuffix){
alert(sPrefix + this.color + sSuffix)
}
var obj = new Object();
obj.color = "red";
sayColor.call(obj, "the color is ", ", a ver nice color indeed.");
--------------------------------
function ClassA(sColor) {
this.color = sColor;
this.sayhaha = function() {
alert(this.color);
}
}
function ClassC(sColor) {
ClassA.call(this, sColor);//当前的this为classc自身
}
var classc = new ClassC("black");
alert(classc.color);
classc.sayhaha();
---------------------------------apply--------------------------------------
function ClassA(sColor){
this.color = sColor;
this.sayColor = function(){
alert(this.color);
}
}
function ClassB(sColor,sName){
ClassA.apply(this, new Array(sColor)); //第一种Array,当前的this为classb自身
//ClassA.apply(this, arguments); //第二种arguments,当前的this为classb自身
this.name = sName;
this.sayName = function(){
alert(this.name);
}
}
var Class2 = new ClassB("blue","han");
alert(Class2.name);
alert(Class2.color);
Class2.sayName();
Class2.sayColor();
---------------------------------delete--------------------------------------
function ClassA(sColor) {
this.color = sColor;
}
function ClassC(sColor, sName) {
this.classA = ClassA;
this.classA(sColor);
delete this.classA;
}
var classc = new ClassC("blue", "han");
alert(classc.color);
------------------------------原型链方式(prototype)继承父类的所有方法 ,而 call方式为克隆this调用方式---------------------
function ClassB(){}
ClassB.prototype = new ClassA();
ClassB.prototype.name = "";
------原型链与call不同在于 [ 原型链方式(prototype)继承父类的所有方法, 而 call方式只能继承到this调用方式]---------
//这里我们用this调用函数
this.fnDisplay();
//这里我们prototype调用函数
class.prototype.fnDisplay = function() {}
//这里我们prototype调用函数
class.prototype.fnDisplay()
------------------------------原型链方式(prototype)继承父类的所有方法 ,而 call方式为克隆this调用方式---------------------
function ClassA(sColor){
this.color = sColor;
this.saycolor = function() {
alert(this.color);
}
}
ClassA.prototype.saycolor1 = function(){
alert(this.color);
}
function ClassB(sColor, sName){
ClassA.call(this, sColor)//call方式只能继承到this调用方式
this.name = sName;
}
var objB = new ClassB("blue","Nicholas");
alert(objB.color);
objB.saycolor();
objB.saycolor1();
------------------------------原型链方式(prototype)继承父类的所有方法 ,而 call方式为克隆this调用方式---------------------
function ClassA(sColor){
this.color = sColor;
this.aaa = function(){
alert("aaa");
}
}
ClassA.prototype.saycolor = function(){
alert(this.color);
}
function ClassB(sColor, sName){
ClassA.call(this, sColor);//只能继承this定义的对象及方法,不能继承到prototype定义的方法
this.name = sName;
}
ClassB.prototype.sayName = function(){
alert(this.name);
}
var objA = new ClassA("red");
var objB = new ClassB("blue","Nicholas");
objA.saycolor();
objB.aaa();
objB.saycolor();//无法调用,因为是原型所以继承不到。
objB.sayName();
------------------------------原型链方式(prototype)继承父类的所有方法 ,而 call方式为克隆this调用方式---------------------
function ClassA(sColor){
this.color = sColor;
}
ClassA.prototype.saycolor = function(){
alert(this.color);
}
function ClassB(sColor, sName){
this.name = sName;
}
ClassB.prototype = new ClassA();//可以全部继承所定义的对象及方法
ClassB.prototype.color = "yellow";
ClassB.prototype.sayName = function(){
alert(this.name);
}
var objA = new ClassA("red");
var objB = new ClassB("blue","Nicholas");
objA.saycolor();
objB.saycolor();//无法调用,因为是原型所以继承不到。
objB.sayName();
------------------------------原型链方式(prototype)继承父类的所有方法 ,而 call方式为克隆this调用方式---------------------
function ClassA(sColor){
this.color = sColor;
this.aaa = function(){
alert("aaa");
}
}
ClassA.prototype.saycolor = function(){//这种方式为后期绑定。
alert(this.color);
}
function ClassB(sColor, sName){
ClassA.call(this, sColor)//call方式,子类继承不到prototype原型定义的方法。
this.name = sName;
}
ClassB.prototype = new ClassA();//原型链方式继承父类的所有方法
ClassB.prototype.sayName = function(){
alert(this.name);
}
var objA = new ClassA("red");
var objB = new ClassB("blue","Nicholas");
//objA.saycolor();
//objB.aaa();
objB.saycolor();
//objB.sayName();
------------------------------原型链方式(prototype)继承父类的所有方法 ,而 call方式为克隆this调用方式---------------------
function baseClass()
{
this.showMsg = function()
{
alert("baseClass::showMsg");
}
this.baseShowMsg = function()
{
alert("baseClass::baseShowMsg");
}
}
baseClass.showMsg = function()
{
alert("baseClass::showMsg static");
}
function extendClass()
{
this.showMsg =function ()
{
alert("extendClass::showMsg");
}
}
extendClass.showMsg = function()
{
alert("extendClass::showMsg static")
}
extendClass.prototype = new baseClass();
instance = new extendClass();
instance.showMsg(); //显示extendClass::showMsg
instance.baseShowMsg(); //显示baseClass::baseShowMsg
instance.showMsg(); //显示extendClass::showMsg
extendClass.prototype.baseShowMsg = function(){
alert("extendClass::baseShowMsg henry")
}
instance.baseShowMsg(); //显示baseClass::baseShowMsg henry
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。