javascrIpt 之说

[size=medium]javascript 运行在宿主环境里,主要是浏览器这个宿主环境,也就是浏览器是javascript的解释器.每个浏览器有不同的实现, 实现标准是1999年通过的ECMAScript edition 3(javascript 1.5/1.6).
正在开发的ECMAScript edition 4(javascript2.0).
实现得最接近标准的是firefox浏览器,最差的当然是IE了.

1.javascript的变量类型:
* Number
* String
* Boolean
* Object
o Function
o Array
o Date
o RegExp
o Math
* Null
* Undefined

(1).Number are "double-precision 64-bit format IEEE 754 values",在javascript中没有所谓的integer类型,浮点数运算也会出现不精确,很长的結果.
使用全局方法parseInt(str,base)可以将字符串转化为数字,
如果str不可转化为数字,返回特殊值NaN

(2).String 是Unicode字符序列

(3). Null,undefined的区别, null 是指变量没有值. 而undefined是指定义了变量,但是没有赋值,没有类型
var obj = null;
var name; //name is undefined


2. 变量的另类赋值方式
var name = obj && obj.name; //先判断obj是否为null,
var name = otherName || 'default'; //如果otherName为false,则使用默认值

3. javascript的对象
javascript 是prototype-based的面向对象语言,而不像如java那种class-based.
JavaScript objects are simply collections of name-value pairs.
就像是java中的HashMap
定义方式:
var obj = new Object();
或者更简便的
var obj = {};
直接使用obj定义属性:
obj.name = 'helo';
or
obj['name'] = 'helo';

也可以直接在{}中定义
var obj = {
name:'helo',
detail: {color:'red'}
}

4.Array
var arr = new Array();
or
var arr = [];
arr[0] = 'hel';
arr[1] = 'tow';
遍历数组
for(var i = 0; i < items.length; i++_)
for(var i = 0, len=items.length; i < len; i++)
for(var i in items)

5. Function
函数的定义
function add(a, b) {
}
调用的时候参数个数可以跟function定义的不一样
函数体里有一个特殊的变量 arguments, 数组类型.
可以在函数体里访问到传到函数的参数

函数是对象,所以他也有属性跟方法,如
add.apply(), add.call()
arguments.callee会记录当前函数被调用的次数

6.用户自定义对象
function makePerson(name) {
return {name:name,
add: function(){}
}
}
对象的prototype属性
Person.prototype.sub = function(){
return this.name;
};
之后Person的所有对象都有sub方法, this代表当前对象
也可以对内置对象增加方法
String.prototype.reverse = function(){
var r = "";
for (var i = this.length - 1; i >= 0; i--) {
r += this[i];
}
return r;
}

7.inner function
定义在function内部的方法,
function betterExampleNeeded() {
var a = 1;
function oneMoreThanA() {
return a + 1;
}
return oneMoreThanA();
}

8.closure
function makeAdder(a) {
return function(b) {
return a + b;
}
}

closure 与 inner function的区别是 closure返回的是新方法,outer function被引用了,调用完之后如果赋值给变量,则外部函数的作用域还存在,


9.memery leak
An unfortunate side effect of closures is that they make it trivially easy to leak memory in Internet Explorer. JavaScript is a garbage collected language - objects are allocated memory upon their creation and that memory is reclaimed by the browser when no references to an object remain. Objects provided by the host environment are handled by that environment.

Browser hosts need to manage a large number of objects representing the HTML page being presented - the objects of the DOM. It is up to the browser to manage the allocation and recovery of these.

Internet Explorer uses its own garbage collection scheme for this, separate from the mechanism used by JavaScript. It is the interaction between the two that can cause memory leaks.

[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值