JavaScript中简单类型包括数字、字符串、布尔值、null值和undefined,其他所有的值都为对象(数组是对象,函数是对象,正则表达式是对象,对象当然也是对象)
var empty_object={}; var stooge={ "first-name":"xxx", "last-name:"xxx" }
在对象字面量中,如果属性名是一个合法的JavaScript标识符且不是保留字,并不强制要求用引号括住属性名。所以用引号括住“fisrt-name”是必须的,是否括住first_name才是可选的了
对象通过引用来传递。它们永远不会被拷贝。
var x=chouchou;
x.nickname='huang';
var nick=chouchou.nickname;
//因为x和chouchou是指向同一个对象的引用,所以nick也为'huang'
var a={},b={},c={};
//a,b,c每个都引用不同的空对象。
a=b=c={};
//a,b,c都引用同一个空对象。
5.原型(prototype)
每一个对象都连接到一个原型对象,并且它可以从中继承属性,所有通过对象字面量创建的对象都连接到Object.prototype这个JavaScript的标准对象。
if(typeof Object.create !== 'function') {
Object.create =function (o) {
var F=function () {};
F.prototype=o;
return new F();
}
}
var another_chouchou=Object.create(chouchou);
for in 语句可用来遍历一个对象中所有的属性名。该枚举过程将会列出所有的属性,包括函数和你可能不关心原型链中的属性。所以我们需要过滤,常用的过滤器是hasOwnProperty以及typeof来排除函数。 属性名出现顺序不确定,要以确定的顺序应创建一个数组,在其中以正确的顺序包含属性名。 var i;
var properties=[
'fistr-name',
'middle-name',
'last-name'
'profession'
];
for(i = 0; i < properties.length;i +=1 ){
document.writeln(properties[i]+':'+
another[propertites[i]]);
}
var MYAPP={};
MYAPP.name={
"first-name":"xxx",
"last-name":"xxxx"
};
第4章函数
1.函数对象
函数就是对象,对象字面量产生的对象连接到Object.prototype,函数对象连接到Function.prototype,函数对象有prototype属性,它的值就是一个拥有constructor属性且为改函数的对象(尼玛,还能再绕点吗),看代码理解
function get(){}
get.prototype.constructor===get
第二章:语法 1.标识符
2.数字
3.字符串
4.语句
if([]){ alert(true);//output true } else{ alert(false); } return { name:'test' } for(myvar in obj){ if(object.hasOwnProperty(myvar)){
.....
5.表达式
6.字面量
1.对象字变量
2.检索
3.更新
4.引用
5.原型(prototype)
6.反射
7.枚举
8.删除
9.减少全局变量污染
var MYAPP={}; MYAPP.name={ "first-name":"xxx", "last-name":"xxxx" };
第4章函数
1.函数对象
2.函数字面量
3.调用