灵活的Javascript

  高手请一笑视之......, 新手可以重新认识一下js.

Javascript类型转换

数据类型/目标类型Boolean (  )Number ()String ( )
Boolean   0,1 "false" "true"
Number ( 等于0的值 or 非数字 ) —> false   等于自身加引号,如:(123 -> "123")
String "" —> false

Number() 整体转化,无法转化则为:NaN

parseInt() 从左边数字截取,如:(123aaa -> 123)

parseFloat() 从左边数字截取识别点,如:(123.4aaa -> 123.4)

 
Array true 恒成立 空数组为0 其他:NaN 顺序输出数组元素,如:(1,2,3)
Object true 恒成立 NaN "[object Object]"
Null false 0 "null"
Undefined false NaN "undefined"
  var obj= new Object();
        obj.a = "aaa";
        obj.b = "bbb";
    console.log(obj.a,obj);  // aaa,Object { a="aaa", b="bbb"}

  实例化一个对象,添加属性并赋值,大家都用过,没什么可说的。

    var fun = function(){
        this.a = "aaa";
        this.b = "bbb";
    };
    console.log(fun.a,fun);  // undefined,function()
    
    var funExample = new fun();
    console.log(funExample.a,funExample); // aaa Object { a="aaa", b="bbb"}

  首先定义了一个构造函数;看输出 构造函数未实例化之前属性不可用,fun是一个函数类型。

  实例化后属性 a = "aaa" ,funExample是一个Object类型,没错,js就是这么光棍,拿个函数实例化一下,就是一个对象了(其实function本质上就是一个object,array也一样.)

  如下:

    var assignArr = ['a','b','c'];   // 字面量声明数组

    assignArr[3] = 'd'              // 向数组中添加一个元素
    
     assignArr['e'] = 'e';             // 关联数组就是这样诞生的

     assignArr.f = "fff";           //亮了吧

    console.log(assignArr,assignArr[5],assignArr['f']);

   声明一个数组,添加元素, 再次添加元素,注意:Javascript没有关联数组 只是我们可以通过这种方法实现关联数组的功能。 assignArr.f = "fff" 等于给 assignArr 对象添加属性并赋值。 输出结果 assignArr是一个数组,assignArr[5] undefind ,assignArr['f'] 是"fff" 。

  再来看一个

    var fun = function(){};
        fun.a = "aaa";
        fun.b = "bbb";

  这是个什么玩意? 来看一下结果

    console.log(fun.a,fun); // aaa function()

  fun.a 是一个属性 (在此,当我们把它当做一个对象来用的时候它就是一个对象), fun是一个函数(你把我当对象啊?我不是哩)。  ——不要过多纠结,已经提到过function本质上就是object,可以按照对象的方式来使用,在javascript面向对象程序设计中理解这一点非常重要。

  上面的用法很少见吧,我之前没见过呢,但jQuery中就这样用了,用的很抽象.

jQuery = function( selector, context ) {
    return new jQuery.fn.init( selector, context, rootjQuery );
}

jQuery.fn = jQuery.prototype = {
    constructor: jQuery,
    init: function( selector, context, rootjQuery ) {
            ......
    }
}  

   怎么样? 有没有被抽了一下的感觉,如果你是搞其他语言开发的,看到这样的用法有木有 亮瞎了,看伤你。。。

   讲不讲道理,有木有规范,想当年一个简单的 C 语言加减乘除,少个逗号、缺个分号、中英文标点不分,对着书本一个符号一个符号输入,末了出错,删掉重来。。。把人坑的分外忧伤... 格式,规范? 那种数据类型能做什么,该怎样用? 那种编程技巧很不错,值得借鉴。

  如今 Javascript、PHP、C# 多少都懂点。重新来过,才发现我们习惯在不知不觉中把自己的思维囚禁。

  在认知的世界,啃着前辈们的经验,享受着拿来主义的便捷,其本质使自己停滞不前。

  编程语言,究其本质只是一种工具,在具有的规则内,我们可以尽情尝试,探索,追求进步。

  记此日志,与诸君共勉。

  

posted @ 2013-05-11 12:20  花落红尘  阅读(177)  评论(0编辑  收藏  举报