原型 如果你需要创建一个对象,但不希望从头创建,而是利用一个已存在的对象创建,只是修改(扩展)其部分属性,这种情况下可以使用原型继承的方式实现: let person = { name: 'Jonh', age: 20 } let teacher = { school: 'MIT', __proto__: person } console.log(teacher.name); console.log(teacher.age); console.log(teacher.school) …
原型 如果你需要创建一个对象,但不希望从头创建,而是利用一个已存在的对象创建,只是修改(扩展)其部分属性,这种情况下可以使用原型继承的方式实现: let person = { name: 'Jonh', age: 20 } let teacher = { school: 'MIT', __proto__: person } console.log(teacher.name); console.log(teacher.age); console.log(teacher.school) …
属性描述符 对象属性除了拥有值以外,还有其他特性,比如: let user = { name: 'Tom', age: 18, } let nameDesc = Object.getOwnPropertyDescriptor(user, 'name'); console.log(nameDesc); // { value: 'Tom', writable: true, enumerable: true, configurable: true } 这里的Object.getOwnPropertyDescr…
和 Python 类似,JavaScript 也支持结构赋值: let names = ['Alice', 'Bob', 'Tiff', 'Light']; let [name1, name2, name3, name4] = names; console.log(name1, name2, name3, name4); // Alice Bob Tiff Light 有时候这样做很方便,可以省去一些数组中间变量: let [firstName, lastName] = "John Smith".split(" "…
可迭代对象 for...of 可以用 for...of遍历数组: let numbers = [1, 2, 3, 4, 5] for (let num of numbers) { console.log(num) } // 1 // 2 // 3 // 4 // 5 或者遍历对象属性: let person = { name: 'John', age: 30 } for (let key in person) { console.log(key, person[key]) } // …
剩余参数 对于变长参数的函数,在 JavaScript 中可以这么定义: function sum(...numbers) { let sum = 0; for (let number of numbers) { sum += number; } return sum; } console.log(sum(1, 2, 3)); console.log(sum()); // 6 // 0 可以在变长参数前添加若干确定的参数: function display(message, …
导入导出 如果一个 JS 脚本要使用另一个 JS 脚本中的内容,需要导出: export default function hello() { return 'hello world'; } 然后导入: import hello from './hello.js'; console.log(hello()); 这里的export default是默认导出,可以使用import xxx from导入默认导出的内容。 如果报错,可以将tsconfig.json中的verbatimModuleSyntax选项修改为…
类成员 字段 创建一个没有任何属性的类: class Point{} const point = new Point(); 添加属性: class Point2{ x: number; // 报错 y: number; // 报错 } TS 会进行检测,要求属性必须初始化,否则会报错: class Point2{ // 创建类 x: number = 0; // 创建属性 y: number = 0; // 创建属性 } 直接初始化时,可以省略类型声明,因为 TS 的编译器可以自动推断…
泛型 泛型函数 定义一个泛型函数: function returnParameter<T>(param: T): T { return param; } 调用函数: returnParameter<string>('hello'); 调用泛型函数时并不是一定要指定泛型类型,也可以省略泛型类型,让 TS 编译器根据实际参数的类型推断: returnParameter('world'); 但有时候遇到复杂的调用,TS 无法正确推断出泛型类型,就需要手动指定。 泛型函数类型 在 TS 中,可以用…
可以为对象类型的参数添加注解以规范对象定义: function printUser(user: { name: string, age: number }): void { console.log("姓名:" + user.name + ",年龄:" + user.age); } printUser({name:"icexmoon",age:15}); 对象类型也可以用类型别名定义: type Person = { name: string, age: number }; function printUser…
函数类型表达式 可以用函数类型表达式表示一个函数的类型: function greeter(fn: (a: string) => void) { fn("Hello, World"); } function printToConsole(s: string) { console.log(s); } greeter(printToConsole); 这里的函数类型表达式(a: string) => void表示一个函数,它接收一个string类型名称为a的参数,且没有返回值。 需要注意…
魔芋红茶
加一点PHP,加一点Go,加一点Python......
COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED.
本网站由
提供CDN加速/云存储服务
Theme Kratos Made By Seaton Jiang