高手请一笑视之......, 新手可以重新认识一下js.
数据类型/目标类型 | 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# 多少都懂点。重新来过,才发现我们习惯在不知不觉中把自己的思维囚禁。
在认知的世界,啃着前辈们的经验,享受着拿来主义的便捷,其本质使自己停滞不前。
编程语言,究其本质只是一种工具,在具有的规则内,我们可以尽情尝试,探索,追求进步。
记此日志,与诸君共勉。