在HTML中使用Javascript
<script>標簽的位置很重要,一般都放在<head>元素中,但是這樣會導致必須等待所有的javascript代碼都被下載解析和執(zhí)行完成后勘畔,才能開始呈現(xiàn)頁面的內(nèi)容不翩,因為html頁面解析是由上而下齿诞,順序解析。所以一般情況下走會放在<body>中献起,并且緊接著</body>洋访。并且如果引用了多個js文件,解析順序也是自上而下的谴餐。
僅當<script async>中有異步屬性時姻政,解析順序不能保證。
Javascript數(shù)據(jù)類型
5種簡單數(shù)據(jù)類型:Undefined, Null, Number, String, Boolean
1種復雜數(shù)據(jù)類型: Object
typeof操作返回值: undefined, boolean, string, number, object, function
undefined指未定義的變量岂嗓,null表示空對象指針汁展。
執(zhí)行環(huán)境(Execution context)和作用域鏈(ScopeChain)
創(chuàng)建對象
工廠模式
構(gòu)造函數(shù)模式的問題,每次創(chuàng)建新的實例都包含不同的Function實例
原型模式
我對于原型模式的理解, Person.prototype是原型指針食绿,原型上的屬性和方法由所有的Person類的實例共享侈咕。而prototype的構(gòu)造函數(shù)constructor又指回Person()函數(shù)。共享對于函數(shù)是很方便的器紧,但對于屬性特別是數(shù)組類的屬性就會存在問題(因為一旦修改一個實例的數(shù)組耀销,原型上的也會一起修改)
查詢時優(yōu)先查找在實例自己的屬性和方法,再去查找prototype的屬性和方法
動態(tài)原型
<script>
function Person(name, age, job){
this.name = name;
this.age = age;
this.job = job;
if (typeof this.sayName != "function") {
Person.prototype.sayName = function(){
console.log(this.name);
};
}
}
var friend = new Person("Belinda", 22, "Makeup");
friend.sayName();
</script>