JS豆知識点01

16283 ワード

JS豆知識ポイント
in演算子
用途:指定された属性がオブジェクトに含まれているかどうかを確認し、ブックの値を返します.
使用法:「属性名」inオブジェクト
例:
var obj = new Object();
//var obj = {};
obj.test = 1;
"test" in obj = true;
"test2" in obj = false;
直ちに関数を実行します
//    
(function(){
laert("        ");
})
//  ,  ()
(function(){
alert("        ");
})();

//    
(function(a,b){
alert(a+b);
})(1,2);
変数の事前宣言
var定義変数を使うと、変数は先に宣言されます.
console.log(a);//a = null
var a = 123;//       
   
var a;
console.log(a);
a = 123

関数の宣言の前に
関数宣言形式で作成した関数は、事前に宣言されて作成されます(優先度が高い).関数宣言の前に関数を呼び出すことができます.
//                   
obj();
function obj(){};
//             
var fun = function(){};
fun();
工場の仕様
大量にオブジェクトを作成できます.
func createPerson(name,age){
	//     
    var obj = new object();
    obj.name = name;
    obj.age = age;
    return obj;
}
構造関数
種類を区別することができます.(習慣:関数名の頭文字を大文字にする)newキーワードを使って呼び出します.
function Person(name,age){
    this.name = name;
    this.age = age;
    this.sayName = function(){
        alert("  ,  "+this.name);
    }
}
var per = new Person("  ","20");
短所:コンストラクタは実行するたびに新しいsayName方法を作成します.すべてのインスタンスのsayNameは唯一です.コンストラクタは実行するたびに新しい方法を作成します.
改善:方法をグローバルに宣言する
function Person(name,age){
    this.name = name;
    this.age = age;
    this.sayName = fun;
}
function fun(){
        alert("  ,  "+this.name);
};
var per = new Person("  ","20");
足りません:全体の名前空間を汚染しました.安全ではありません.
Tip:instance ofを使用して、オブジェクトがクラスのインスタンスであるかどうかを確認することができます.(どのオブジェクトもObjectの例です.)
構文:オブジェクトinstance of構造関数
戻り値:book値
例:per instance of Person
プロトタイプ
関数を作成するごとに、解析器は関数に固有の属性プロトタイプを追加します.この属性はオブジェクト、すなわちプロトタイプオブジェクトに対応しています.関数は普通の関数としてプロトタイプを呼び出しても機能しません.関数がコンストラクタとして呼び出されると、作成されたオブジェクトの中には作成された属性が配置関数のプロトタイプのオブジェクトを指します.__u uを通すことができますプロト.を選択します.
例:
function MyClass(){
    
}
var mc = new Myclass();
var mc1 = new Myclass();
//  mc1.__proto__、mc2.__proto__、Myclass.prototype       
作用:原型の対象は一つの公共の区域に相当し、すべての同じ種類の試験例はこの原型の対象にアクセスできます.対象の中にある内容を原型の対象に統一して設置することができます.
私たちは対象の属性や方法を訪問する時、まず対象自身の中で探します.ある場合はそのまま使います.ない場合は元のオブジェクトの中から探します.
例:
function MyClass(){
    
}
MyClass.prototype.a = 123;
var mc = new Myclass();
//  mc.a = 123
コンストラクタ内の共有方法の作成を改良します.
function Person(name,age){
    this.name = name;
    this.age = age;
}
Person.prototype.sayName = function (){
        alert("  ,  "+this.name);
};
var per = new Person("  ","20");
per.sayName();
inを使ってオブジェクトに属性があるかどうかをチェックし、hasOwnProperty()を使ってオブジェクト自体にその属性があるかどうかをチェックします.
function Person(name,age){
}
Person.prototype.name = "      name"
var per = new Person();
console.log("name" in mc);
//     True
console.log(mc.hasOwnProperty("age"));
//     false
プロトタイプチェーン:
プロトタイプのオブジェクトも対象です.プロトタイプもあります.オブジェクトの属性や方法を使うと、プログレッシブアップして検索します.終了するまで(Objectオブジェクトのプロトタイプが見つかります).hasOwnProperty()方法はObjectオブジェクトに存在する.