在HTML中使用Javascript
<script>标签的位置很重要,一般都放在<head>元素中,但是这样会导致必须等待所有的javascript代码都被下载解析和执行完成后,才能开始呈现页面的内容,因为html页面解析是由上而下,顺序解析。所以一般情况下走会放在<body>中,并且紧接着</body>。并且如果引用了多个js文件,解析顺序也是自上而下的。
image.png
仅当<script async>中有异步属性时,解析顺序不能保证。
Javascript数据类型
5种简单数据类型:Undefined, Null, Number, String, Boolean
1种复杂数据类型: Object
typeof操作返回值: undefined, boolean, string, number, object, function
undefined指未定义的变量,null表示空对象指针。
执行环境(Execution context)和作用域链(ScopeChain)
image.pngimage.png
image.png
创建对象
工厂模式
image.png
构造函数模式的问题,每次创建新的实例都包含不同的Function实例
image.png
原型模式
image.png
我对于原型模式的理解, Person.prototype是原型指针,原型上的属性和方法由所有的Person类的实例共享。而prototype的构造函数constructor又指回Person()函数。共享对于函数是很方便的,但对于属性特别是数组类的属性就会存在问题(因为一旦修改一个实例的数组,原型上的也会一起修改)
image.png
查询时优先查找在实例自己的属性和方法,再去查找prototype的属性和方法
image.png
动态原型
<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>
网友评论