Javascript 编程最佳实践

随着 浏览器 对 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);



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值