Skip to content

Commit 3f80514

Browse files
committed
修改stdlib/number
1 parent 6c336c4 commit 3f80514

File tree

3 files changed

+124
-7
lines changed

3 files changed

+124
-7
lines changed

grammar/string.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,21 @@ var longString = "Long " +
7979

8080
{% endhighlight %}
8181

82+
另外,有一种利用多行注释,生成多行字符串的变通方法。
83+
84+
```javascript
85+
86+
(function () { /*
87+
line 1
88+
line 2
89+
line 3
90+
*/}).toString().split('\n').slice(1,-1).join('\n')
91+
// "line 1
92+
// line 2
93+
// line 3"
94+
95+
```
96+
8297
### 转义
8398

8499
反斜杠在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。

nodejs/packagejson.md

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ date: 2014-10-24
66
modifiedOn: 2014-10-24
77
---
88

9+
## 概述
10+
911
每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm install 命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。
1012

1113
下面是一个最简单的package.json文件,只定义两项元数据:项目名称和项目版本。
@@ -63,13 +65,9 @@ modifiedOn: 2014-10-24
6365

6466
{% endhighlight %}
6567

66-
上面代码中,有些成员的含义很明显,但有几项需要解释一下。
67-
68-
**(1)engines**
69-
70-
engines指明了该项目所需要的node.js版本。
68+
下面详细解释package.json文件的成员。
7169

72-
**(2)scripts**
70+
## scripts
7371

7472
scripts指定了运行脚本命令的npm命令行缩写,比如start指定了运行npm run start时,所要执行的命令。
7573

@@ -86,7 +84,7 @@ scripts指定了运行脚本命令的npm命令行缩写,比如start指定了
8684

8785
{% endhighlight %}
8886

89-
**(3)dependencies,devDependencies**
87+
## dependencies,devDependencies
9088

9189
dependencies和devDependencies两项,分别指定了项目运行所依赖的模块、项目开发所需要的模块。
9290

@@ -125,3 +123,41 @@ npm install express --save-dev
125123
{% endhighlight %}
126124

127125
上面代码表示单独安装express模块,--save参数表示将该模块写入dependencies属性,--save-dev表示将该模块写入devDependencies属性。
126+
127+
## bin
128+
129+
bin项用来指定各个内部命令对应的可执行文件的位置。
130+
131+
```javascript
132+
133+
"bin": {
134+
"someTool": "./bin/someTool.js"
135+
}
136+
137+
```
138+
139+
上面代码指定,someTool 命令对应的可执行文件为 bin 子目录下的 someTool.js。Npm会寻找这个文件,在`node_modules/.bin/`目录下建立符号链接。在上面的例子中,someTool.js会建立符号链接`npm_modules/.bin/someTool`。由于`node_modules/.bin/`目录会在运行时加入系统的PATH变量,因此在运行npm时,就可以不带路径,直接通过命令来调用这些脚本。
140+
141+
因此,像下面这样的写法可以采用简写。
142+
143+
```javascript
144+
145+
scripts: {
146+
start: './node_modules/someTool/someTool.js build'
147+
}
148+
149+
// 简写为
150+
151+
scripts: {
152+
start: 'someTool build'
153+
}
154+
155+
```
156+
157+
所有`node_modules/.bin/`目录下的命令,都可以用`npm run [命令]`的格式运行。在命令行下,键入`npm run`,然后按tab键,就会显示所有可以使用的命令。
158+
159+
## 其他
160+
161+
### engines
162+
163+
engines指明了该项目所需要的node.js版本。

stdlib/number.md

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,3 +167,69 @@ toPrecision方法用于四舍五入时不太可靠,可能跟浮点数不是精
167167
// "12.4"
168168

169169
{% endhighlight %}
170+
171+
## 自定义方法
172+
173+
与其他对象一样,Number.prototype对象上面可以自定义方法,被Number的实例继承。
174+
175+
```javascript
176+
177+
Number.prototype.add = function (x) {
178+
return this + x;
179+
};
180+
181+
```
182+
183+
上面代码为Number对象实例定义了一个add方法。
184+
185+
由于Number对象的实例就是数值,在数值上调用某个方法,数值会自动转为对象,所以就得到了下面的结果。
186+
187+
```javascript
188+
189+
8['add'](2)
190+
// 10
191+
192+
```
193+
194+
上面代码中,调用方法之所以写成`8['add']`,而不是`8.add`,是因为数值后面的点,会被解释为小数点,而不是点运算符。将数值放在圆括号中,就可以使用点运算符调用方法了。
195+
196+
```javascript
197+
198+
(8).add(2)
199+
// 10
200+
201+
```
202+
203+
由于add方法返回的还是数值,所以可以链式运算。
204+
205+
```javascript
206+
207+
Number.prototype.subtract = function (x) {
208+
return this - x;
209+
};
210+
211+
(8).add(2).subtract(4)
212+
// 6
213+
214+
```
215+
216+
上面代码在Number对象的实例上部署了subtract方法,它可以与add方法链式调用。
217+
218+
我们还可以部署更复杂的方法。
219+
220+
```javascript
221+
222+
Number.prototype.iterate = function () {
223+
var result = [];
224+
for (var i = 0; i <= this; i++) {
225+
result.push(i);
226+
}
227+
return result;
228+
};
229+
230+
(8).iterate()
231+
// [0, 1, 2, 3, 4, 5, 6, 7, 8]
232+
233+
```
234+
235+
上面代码在Number对象的原型上部署了iterate方法,可以将一个数值自动扩展为一个数组。

0 commit comments

Comments
 (0)