1.JavaScript由三部分组成:
- ECMAScript:提供核心语言功能
- 文本对象模型(DOM):提供访问和操作网页内容的方法和接口
- 浏览器对象模型(BOM):提供与浏览器交互的方法和接口
2.自定义构造函数创建对象
//自定义构造函数创建对象 //函数与构造函数的区别在于名字(首字母)是不是大写 function Person(name, age) { this.name = name; this.age = age; this.sayHi = function () { console.log("我叫" + this.name + ",年龄是:" + this.age); } } var obj1 = new Person("小明", 10); console.log(obj1.name); console.log(obj1.age); obj1.sayHi(); var obj2 = new Person("小芳", 18); console.log(obj2.name); console.log(obj2.age); obj2.sayHi(); console.log(obj1 instanceof Person); //true console.log(obj2 instanceof Person); //true //自定义狗的构造函数 function Dog(name, age, sex) { this.name = name; this.age = age; this.sex = sex; } var dog = new Dog("小黑", 10, "男"); console.log(dog instanceof Person) //false console.log(dog instanceof Dog) //true
3.json对象以及json对象的遍历(for-in循环)
//遍历对象,是不能通过for循环遍历,无序 var json = { "name": "Lee", "age": "25", "sex": "female" }; var key = "height"; console.log(json[key]); //undefined //只要用.(点)了之后,score属性就被创建了,只不过没有赋值 console.log(json.score) //undefined //可以通过for-in循环 for (var key in json) { //这里不能用.来拿值,用点会创建新的名为key的属性 // console.log(key+"---"+json.key);//这是不对的 console.log(key + "---" + json[key]); /* 输出结果: name---Lee age---25 sex---female */ }
4.简单类型和引用类型
- 原始数据类型:number, string, boolean, undefined, null, object
- 基本类型(简单类型),值类型:number, string, boolean
- 复杂类型(引用类型):object
- 空类型:null, undefined
值类型的值在哪一块空间存储? 栈中存储
引用类型的值在哪一块空间存储? 对象在堆上存储,地址在栈上存储。
注意:这里的地址位实际有16位,我在这里只是简写,说明一下原理。