初めて対象に接触したjavascript
3108 ワード
一、対象のスコープ
http://www.w3school.com.cn/js/pro_jsobjectdefining.asp
function ClassA(){
var v = " v";
this.v = " v";
var me = this;
ClassA.prototype.F = function(){
alert(" ");
}
function _F(){
alert(" , 。");
}
ClassA.prototype.F2 = function(){
alert(v); //OK
alert(this.v); //OK
_F(); //OK
F(); //
this.F(); //OK
}
function _F2(){
F(); //
this.F(); //
me.F(); //OK
}
}
var objA = new ClassA();
alert(objA.v); // “ v”
objA.F2();
objA._F2(); // ,
二、書き換えるfunction ClassA(){
var v = " v";
this.v = " v";
if (typeof ClassA._initialized == "undefined"){
ClassA.prototype.F = function(){
alert(" ");
}
ClassA._initialized = true;
}
function _F(){
alert(" , 。");
}
}
var objA = new ClassA();
objA.v = " v, ";
ClassA.prototype.F = function(){
alert(" , ");
}
alert(objA.v); // “ v, ”
objA.F(); // " , "
function ClassA(){
this.v = " v";
if (typeof ClassA._initialized == "undefined"){
ClassA.prototype.F = function(){
alert(" F");
}
ClassA._initialized = true;
}
this.F2 = function(){
alert(" F2");
}
}
var objA1 = new ClassA();
var objA2 = new ClassA();
ClassA.prototype.F = function(){
alert(" F, 。");
}
objA1.F2 = function(){
alert(" F2, objA1 ");
}
objA1.F(); // F, 。
objA2.F(); // F, 。
objA1.F2(); // F2, objA1
objA2.F2(); // F2
三、継承するfunction ClassA(){
this.vA = " ClassA vA";
if (typeof ClassA._initialized == "undefined"){
ClassA.prototype.F = function(){
alert(" ClassA F");
}
ClassA._initialized = true;
}
this.F2 = function(){
alert(" F2");
}
}
function ClassB(){
this.vB = " ClassB vB";
}
ClassB.prototype = new ClassA();
var objA = new ClassA();
var objB = new ClassB();
alert(objB.vA); // ClassA vA
alert(objB.vB); // ClassB vB
objB.F(); // ClassA F
objB.F2(); // F2
ClassB.prototype.F = function(){
alert(" ClassA F, ClassB 。");
}
objA.F(); // ClassA F
objB.F(); // ClassA F, ClassB 。
参考記事:http://www.w3school.com.cn/js/pro_jsobjectdefining.asp