コンストラクター(拡張)

コンストラクター(拡張)

案例四
普通函数格式
function Fn(){
    
    
};
Fn();

构造函数格式
function Fn(){
    
    
};
var f1= new Fn();
>>var f1= new Fn;
1.コンストラクターモードでは、new Fn()が実行されます。パラメーターを渡す必要がない場合は、次の()を省略できます。
案例五
function Fn(){
    
    
this.x=100
>>this>>f1
this.getX=function(){
    
    
console.log(this.x);
>>this>>需要看getX执行的时候才知道
}
};
var f1= new Fn();
2.クラスに表示されるthis.xxx=xxxのthisは、現在のクラスのインスタンスであり、特定の属性値(メソッド)の場合、メソッドのthisは、前に「。」があるかどうかを確認する必要があります。メソッドが実行されたときのメソッドの
案例六
var f1=new Fn;
f1.getX();
>>方法中的this是f1>>100
var ss=f1.getX;
ss();
>>方法中的this是window>>undefined
3.クラス関数には通常の関数の側面があります。関数が実行されると、var numは実際には現在形成されているプラ​​イベートスコープ内のプライベート変数にすぎません。f1のインスタンスとは関係なく、this.xxx=xxxだけです。これは、f1に関連するf1のインスタンスにプライベートプロパティとメソッドを追加することと同じです。
案例七
function Fn(){
    
    
var num=10;
this.x=100;
>>f1.x=100
this.getX=function(){
    
    
>>f1.getX=function...
console.log(this.x);
}
}
var f1=new Fn;
console.log(f1.num);
>>undefined
4.コンストラクターでは、ブラウザーはデフォルトでインスタンスを返します(オブジェクトデータ型の値を返します)。手動でreturn to returnを書き込むと、次のようになります。

返される値は基本データ型であり、現在のインスタンスは変更されません。たとえば、次のようになります。return100;f1は引き続き現在のFnクラスのインスタンスです。

返される値は参照データ型であり、現在のインスタンスはそれ自体で返される値に置き換えられます。例:return {name: "Xiaohei"}; f1はFnのインスタンスではなく、オブジェクトの例return {name: "Xiao Hei"};

案例八
function Fn(){
    
    
this.x=100;
this.getX=function(){
    
    
console.log(this.x);
};
// return 100;>>不变
return {
    
    name:"小黑"};
}
var f1=new Fn;
console.log(f1);
5.インスタンスがこのクラスに属しているかどうかを検出します>>instanceof
案例九
console.log(f1 instanceof Fn);>>true
console.log(f1 instanceof Array);>>false
console.log(f1 instanceof Object);>>true

すべてのインスタンスはオブジェクトデータ型であり、各オブジェクトデータ型は組み込みクラスObjectのインスタンスであるため、f1もそのインスタンスです。

データ型を検出するために、typeofには独自の制限があり、オブジェクト、配列、通常の...を細分化することはできません。

案例九拓展
var a=[];
console.log(a instanceof Array);
>>true>>说明a是一个数组
6. f1とf2はどちらもクラスFnのインスタンスであり、どちらもxとgetxの2つの属性を持っていますが、これら2つの属性はグリッドのプライベート属性であるため、console.log(f1.getX === f2.getX ); >> false
案例十
function Fn(){
    
    
this.x=100;
this.getX=function(){
    
    
console.log(this.x);
}
}
var f1=new Fn;
var f2=new Fn;

hasOwnProperty:プロパティがこのオブジェクトの「プライベートプロパティ」であるかどうかを検出するために使用されます。このメソッドはプライベートプロパティのみを検出できます。

console.log(f1.hasOwnProperty("getX"));
>>true "getX"是f1的私有的属性

思考:プロパティがオブジェクトhasPubPropertyの「パブリックプロパティ」であるかどうかを検出する

案例十拓展
function hasPubProperty(obj,attr){
    
    
return(attr in obj) && !obj.hasOwnProperty(arrt);
>>首先保证是它的一个属性并且还不是私有的属性,那么只能是公有的属性了
}
console.log(hasPubProperty(f1,"getX"));
>>false
7、isPrototypeof

dir(Object.prototype)>> object

おすすめ

転載: blog.csdn.net/yilingpupu/article/details/105486250
おすすめ