JS精髓笔记

 

在对象字面量中,如果属性名是一个合法的Javascript表示法并且不是保留字,

并不强制要求用引号扩住属性名。所以用引号括住"first-name"是必须的,中间有"-",

而对括住 first_name 则是可选的。

 

检索对象2种方式

1. 合法标识符时可以使用.表示法

2. 其他可用  stooge["first-name"] 

 

||运算符可以用来填充默认值

var middle = stooge["middle-name"] || "(none)";

var status = flight.status || "unknown";

 

原型连接在更新时是不起作用的,对某个对象作出改变时,不会触及到该对象的原型。

原型连接只有在检索值的时候才被用到。原型关系是一种动态关系,如果添加一个新

的属性到原型中,所有基于该原型创建的对象的该属性都可见。

stooge.profession = 'actor';

another_stooge.profession //'actor'

--------

for in 语句可用来遍历一个对象中的所有属性名,但该过程会列出所有属性,

所以常用的过滤器是hasOwnProperty方法,以及使用typeof来排除函数,

属性名的出现顺序是不确定的,如果要确保属性以特定的顺序出现,最好的办法

完全避免使用for in 语句,而是创建一个数组, 如:

 

var i;

var properties = [

'first-name',

'middle-name',

'last-name'

]

for( i =0; i < properties.length; i += 1) {

document.writeln(properties[i] + ': ' +

another_stooge[properties[i]);

}

 

每个函数在创建时附有2个附加的隐藏属性:函数的上下文和实现函数行为的代码

每个函数对象在创建时也随带有一二prototype属性,它的值是一个

拥有constructor属性且即为该函数的对象。

 

删除属性,主义可能会让来自原型链中的属性浮现出来;

delete another_stooge.nickname

 

A function literal can appear anywhere that an expression can appear.

Functions can be defined inside of other function. An inner function 

of course has access to its parameters and variables.An inner function

also enjoys access to the parameters and variables of the functions it

is nested within. The function object created by a function literal

contains a link to that outer context . This is called closure.This is 

the source of enormous expressive power.

函数字面量可以出现在任何也许表达式出现的地方。函数也可以被定义在其他函数中。

一个内部函数自然可以访问自己的参数和变量, 同时他也能方便地访问它被嵌套在其中

的那个函数的参数与变量。通过函数字面量创建的函数对象包含一个连到外部上下文

的连接,这被称为闭包。

 

每个函数接收2个附加的参数:this和arguments。

javascript中一共有四种调用模式:

方法调用模式,函数调用模式,构造器调用模式  和 apply 调用模式

 

注意:方法调用是有有一个隐藏的arguments数组,由于语言的一个设计错误

arguments并不是一个真正的数组,它只是一个array-like 的对象,

有length属性,但缺少所有的数组方法。但是length属性定义为

这个数组的最大整数属性名加上1,所以不一定等于数组里的属性个数。

 

数组

var numbers = [

'zero','one','two'

];

var numbers_object = {

'0':'zero',  '1':'one', '2':'two'

}

2者都是包含有10个属性的对象,并且那些属性刚好有相同的名字和值

但是numbers继承自Array.prototype, 而numbers_object继承自Object.prototype

所以numbers有大量有用方法和length属性,后者则没有

 

数组尾部追加新元素

1. numbers[numbers.length] = 'shi';

2. numbers.push('go');

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值