随着 浏览器 对 HTML5 ,CSS3 更好的支持,移动web 开发将成为主流。
Javascript 作为一门 脚本 运行在浏览器端,提供友好的 交互效果;
Javascript 还可以运行在服务端 node 环境中;
既然Javascript 这么多优点,那我们来学习它,写出更好的,更优秀的站点吧。
// 始终 在一行 声明 变量, 始终用 var 来声明变量
var a, b, c;
var a = 1, b = 2, c = 3, d = false, o = {};
// 声明 对象
var o = {};
// 声明数组对象
var a = [];
// 没赋值,则使用默认值,
var f = b || false;
function setDefault(opt) {
var options = opt || {
noValue : true
};
}
// switch结构不利于代码重用,往往可以用对象形式重写。
var obj1 = {
k1 : function() {
console.log('this k1...');
},
k2 : function() {
console.log('this k2...');
},
df : function() {
console.log('this default method...');
}
};
function invokeMethod(obj, e) {
if (obj[e]) {
return obj[e]();
}
// 默认方法
return obj['df']();
}
invokeMethod(obj1, 'k1'); // this k1...
invokeMethod(obj1); // this default method...
// 使用 typeof 来检查变量 有没有声明
var isNotDefine = (typeof v === "undefined");
console.log(isNotDefine);
//如果一个属性在原型链的上端,则对于查找时间将带来不利影响。特别的,试图获取一个不存在的属性将会遍历整个原型链。
//并且,当使用 for in 循环遍历对象的属性时,原型链上的所有属性都将被访问。
//当检查对象上某个属性是否存在时,hasOwnProperty 是唯一可用的方法。
//同时在使用 for in loop 遍历对象时,推荐总是使用 hasOwnProperty 方法, 这将会避免原型对象扩展带来的干扰。
Object.prototype.date = new Date();
var obj = {
name : 'starzou',
hobby : [ 'Java', 'Javascript', 'Music' ]
};
for ( var p in obj) {
if (obj.hasOwnProperty(p)) {
console.log(p, ' : ', obj[p]);
}
}
//this 的工作原理:JavaScript 有一套完全不同于其它语言的对 this 的处理机制。 在五种不同的情况下 ,this 指向的各不相同。
// 1、当在全部范围内使用 this,它将会指向全局对象。
console.log(this);
(function foo() {
// 2、指向全局对象
console.log(this);
})();
var obj = {
name : 'this is object',
foo : function() {
// 3、指向obj对象
console.log(this);
}
}
obj.foo();
function Dog(name) {
this.name = name;
// 4、指向新创建的对象
console.log(this);
}
var d1 = new Dog('xiaog');
// 5、当使用 Function.prototype 上的 call 或者 apply 方法时,函数内的 this 将会被 显式设置为函数调用的第一个参数。
function f1() {
console.log(this.name);
}
var o1 = {
name : 'this is o1'
};
f1.apply(o1);
f1.call(o1);