javaScript学习01

js
1.组成:
Core
JavaScript核心编程。内置的对象、方法等。

DOM
文档对象模型。JavaScript是一种嵌入式脚本语言,它也没有权利和义务提出如何控制浏览器的IO(输入和输出)方法。不同浏览器留出了允许JavaScript控制的接口,DOM是HTML和XML的应用程序接口(API),DOM能够把整个文档提炼为以节点为单元的树形结构,并具备检索树形结构、操作树形结构,以及编辑节点内容的能力。

BOM
BOM主要处理浏览器窗口和框架,不过浏览器一般把它看做是客户端JavaScript脚本语言的扩展,包括window对象、navigator对象、location对象、cookie操作支持、ajax支持等等。


2.复制、传递和比较数据
Numbers 和 Boolean 类型的值 (true 和 false) 是按值来复制、传递和比较的。当按值复制或传递时,即使更改原来的值,也不会影响所复制的值(反过来也一样),因为这两个值是独立的实体。

对象、数组以及函数是按引用来复制、传递和比较的。 当按地址复制或传递时,如果更改原始项,则将同时更改原始项和复制项(反过来也一 样)。实际上只有一个实体;“复本”并不是一个真正的复本,而只是该数据的又一个引用。

当按引用比较时,要想比较成功,两个变量必须参照完全相同的实体。例如,两个不同的 Array 对象即使包含相同的元素也将比较为不相等。要想检查两个数组是否包含了相同的元素,比较 toString() 方法的结果。

字符串是按引用复制和传递的,但是是按值来比较的,但字符串对象按引用比较。假如有两个 String 对象(用 new String("something") 创建的),按引用比较它们,但是,如果其中一个或者两者都是字符串值的话,按值比较它们。


3.typeof
语法:typeof[()expression[]];
typeof 运算符把类型信息当作字符串返回。typeof 返回值有六种可能: “number” , “string” , “boolean” , “object” , “function” 和 “undefined“。
typeof 语法中的圆括号是可选项。
特别注意,当x为对象、数组和null,typeof(x)返回“object”。
a === undefined;          //报错
var b;
b === undifined;          //返回true
typeof(c) == ‘undefined’;     //返回true

用typeof来判断变量是否已初始化是最保险。

4.null
这是一个对象,但是为空。因为是对象,所以 typeof null返回 ‘object’ 。
null 参与数值运算时其值会自动转换为 0 。

5.undefined
undefined是全局对象(window)的一个特殊属性,其值是未定义的。但 typeof undefined 返回 ‘undefined’ 。
当变量未申明,或申明未赋值时其初始值为undefined。
undefined参与任何数值计算时,其结果一定是NaN。

6.类型转换
String
 var yy = “” + xx;         //自动调用xx.toString()

Number(转换为数值就只有parseInt和parseFloat两个方法)
 Var i = parseInt(“35px”);  //返回35
 Var j = parsetInt(“asdf”);  //返回NaN
 Var k = parseFloat(“36.6px”); //返回36.6
 Var m = “123” * 1 + 1;    // 返回124

7.JavaScript简化语法
数组
var arr = new Array(1, 2, 3, 4);
var arr = [1, 2, 3, 4];

对象
var obj = new Object();
var obj = {};

正则表达式
var regExp = new RegExp(“\d+”, “i”);
var regExp = /\d+/i;

8.This指针
在Javascript里面,this指针代表的是执行当前代码的对象的所有者。
var name = "Kevin Yang";
function sayHi() {
    alert("你好,我的名字叫" + this.name);
}
sayHi();   //等价于window.sayHi()

全面的对象、变量、函数都属于window对象。当前代码是第3行,此代码块的对象是sayHi函数对象,而sayHi函数对象属于window对象,所以上面的this指向window对象。

9.函数解析
1>.在函数内部的最后,使用return arguments.callee;  可以返回函数自身 
2>.下面示例在函数声明前调用函数也是合法的,并能够被正确解析,所以返回值为1。
f();                        // 调用函数,返回值1
function f(){
    alert(1);
}
但是,如果按下面方式定义函数,则JavaScript解释器会提示语法错误。
f();                        // 调用函数,返回语法错误
var f = function(){
    alert(1);
}
这是因为,上面示例中定义的函数仅作为值赋值给变量f,所以在预编译期,JavaScript解释器只能够为声明变量f进行处理,而对于变量f的值,只能等到执行期时按顺序进行赋值,自然就会出现语法错误,提示找不到对象f

10.一个经典代码:
Function.prototype.make = function(n, f){ 
    this.prototype[n] = f; 

// 定义类 
var Box = function(){} 
// 为类制造方法 
Box.make("set", function(x){
    this.x = x; 
}) 
Box.make("get", function(){
    return this.x;
})
这段主要的奇异点在第2行。在JS中,属性和方法可用数组方式访问,比如myDiv.id也可 以写成myDiv["id"],"asdf".substr(1,2)也可以写成"asdf"["substr"](1,2),知道了这一点奇异也就不再 “奇异”了。此处的属性是个函数,执行第7行时,与this.prototype.set=function(x) {...}的效果一样。
在jQuery的源码中有大量这样的用法,好处在于可以将函数名以字符串的方式传入,从而实现动态定义类的方法。


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值