一、JavaScript的预解析
先对var变量和function函数进行解析,然后再执行其他的代码
1、var预解析
/*先解析var变量num
然后执行console输出
最后把10赋给num
*/
console.log("num=",num);
var num = 10;
2、function函数的预解析
/*
先解析fn函数的定义
然后执行console语句
*/
console.log("1+2+3+...+100=",fn());
function fn(){
var s = 0;
for(var i=1;i<=100;i++){
s += i;
}
return s;
}
二、对象
1、对象:一切皆为对象,是属性和行为的结合体。在面向对象中把'属性'称为对象的成员(成员变量)
把'行为'称为成员方法(成员函数)。
属性:反映的是对象的静态特征
行为:反映对象的动态特征
var p1 = { //对象
color: '黑色',
weight: '188g',
screenSize: '6.5',
call: function(num) { console.log('打电话给' + num);},
sendMessage: function(num, message) {},
playVideo: function() { console.log('播放视频'); },
playMusic: function() { console.log('播放音乐'); }
}
2、JavaScript中的对象:是一种数据类型,用"{}"表示一个对象,在"{}"中包裹了对象的成员(包括属性和方法),以"key:value"(键-值对)方式存储各成员。"key"是成员名,"value"是成员的值。
对成员的访问格式是:
对象名.属性名 或 对象名['属性名']
对象名.方法名([参数]) 或 对象名['方法名']([参数])//访问属性 console.log(p1.color); console.log(p1.weight); console.log(p1.screenSize); //访问方法 p1.call('123'); p1.sendMessage('123', 'hello'); p1.playVideo(); p1.playMusic();
3、在JavaScript中可以先声明空对象,然后给对象添加属性和方法
var 对象名 = {}
对象名.属性名 = 值
对象名.方法名 = function([参数]){
方法体语句
}
var stu1 = {
name: '小明', // name属性
age: 18, // age属性
sex: '男', // sex属性
// sayHello方法
sayHello: function() { console.log('Hello'); } };
//访问学生对象的属性
stu1.name // 方式1,输出结果为:小明
stu1['age'] // 方式2,输出结果为:18
//访问学生对象的方法
stu1.sayHello() // 方式1,输出结果为:Hello
stu1.['sayHello']() // 方式2,输出结果为:Hello
当对象成员中包含特殊字符时,可以用字符串来表示:
var obj = {
'name-age': '小明-18'
};
console.log(obj['name-age']); // 输出结果:“小明-18”
手动赋值属性或方法来添加成员:
var stu2 = {}; // 创建一个空对象
stu2.name = 'Jack'; // 为对象增加name属性
stu2.introduce = function() { // 为对象增加introduce方法
alert('My name is ' + this.name); // this代表当前对象
};
alert(stu2.name); // 访问name属性,输出结果:Jack
4、使用new运算符创建对象
(1)Object:是JavaScript中的超级对象,即用户创建的对象都