现在的位置: 首页 > 综合 > 正文

js—-类型转换、函数、类

2013年03月03日 ⁄ 综合 ⁄ 共 1498字 ⁄ 字号 评论关闭

额外的:

数组中元素中可以类型不同,显示js是动态类型 

数组Array和Function都是对象的扩展

+new Date() = new Date().getTime()

encodeURLComponent比encodeURL多一个将冒号也转义的功能

类型转换:

最多的类型转换就是string类型和number类型的彼此转换,

string----->number:  可以乘1,或者字符串前加一个一元运算符+,字符串不能转换就会返回NaN,用函数isNaN判断

                                       全局函数parseInt和parseFloat函数转换,第一个参数就是字符串,第二个参数可选,可以传数的进制,直到解析到非法字符为止

                                  

number----->string:     加一个空串就好

函数(2个概念:函数表达式、闭包;1个属性2个方法:属性caller方法call、apply;1个相关项:arguments:2个属性length、callee,对象但可以数组访问特性)

具体如下:

函数表达式的概念和语法 (函数表达式)()表达

函数声明语句其实也是将函数表达式值赋给函数名,但只有在语句中这种赋值能解析,(function funName(){})()这种不会发生赋值

arguments对象,保存所有传入的参数,可以像数组一样下标访问(但它是对象),还有length和callee属性,分别表示参数表长度和所属的函数

由于js方法签名无法相同,所以length属性配合switch-case可以用来模拟重载

函数本身也是对象,有caller属性,表示调用自己的函数,调用函数还可以通过fun.call(arg1,arg2.... )方式,arg1传入代替函数内部的this指针,后面就是参数列表,call是函数对象的一个方法,类似的还有apply

闭包:函数中还可以定义函数,这些内部函数本身和对变量的存活周期都符合块作用域规则,同时内部函数被外部函数当成表达式返回的话,闭包会自动保存内部函数所需要访问的临时变量,这个可以用来模拟类的私有变量

有个比较好的写法:arguments.callee.caller

类:

基本概念:

                一切皆对象,并且根是Object,和java一样;

                 跟Object的自带方法是toString()和valueOf()方法

                 虽然有包装类,但是不会自动执行,因此基本类型instanceof 对应的包装类会返回false

封装:私有化就通过闭包实现,函数内部本身没有字段,闭包自动保存外层函数的临时变量

继承:每个方法有个静态属性对象prototype,SubClass.prototype=new SuperClass 就可以了,但是一定要在new对象之前(这个怎么都不理解。。。。),这里有个构造参数问题,在子类里利用call函数加上superClass.call(this,arguments list)就可以了

多态:貌似没这个东西

对象的创建:new fun()和fun()都会执行函数,但new fun()会自动返回一个对象,因此如果函数本身返回一个对象就会覆盖原始应该的对象,而fun()该怎么就怎么

另外:

          方法调用的时候this指针谁调用就指向谁,最外层就是Window

           创建对象后直接用.运算符就可以加上任何属性,或者.prototype.attribute = value

抱歉!评论已关闭.