匿名函数
const funcA =function (){} 命名要标明类型例如funA表示function类型
- ```js
(function (){ //匿名函数
let foo=10;
let bar=2;
console.log(foo*bar);
})();//匿名函数与立即执行函数结合起来,立即函数可以去做闭包
```
- 变形传参:
```js
(function (foo,bar){ //匿名函数
console.log(foo*bar);
})(20,3);
```
- 变形值交给外界:
```js
let res = (function (foo,bar){ //匿名函数
console.log(foo*bar);
})(20,3);
```
- 作为图书管理系统, 写个书的入库类
JS 面向对象 class 关键字来的比较晚, 用function 来构造类
JS类优点像火车, 火车头,车身
```js
// 单独构造函数就成为一个类
function Book(isbn,title,author){
this.isbn=isbn;
this.title=title;
this.author=author;
}
```
- 构造函数与普通法函数的区别:
构造函数:生产实例 孩子多多 constructor?
this...
this...
一步步来, 构造过程 女娲捏人
1. 构造函数函数名首字母大写
2. 运行的方式()() new fn()
new的时候会把构造函数执行一下,并且this指向当前对象
Book(); //指向window
new Book();//指向Book
let js_dontKnow = new Book('111');//指向实例化的对象js_dontKnow
事件执行函数,叫什么名字无所谓
addEventListener('click',() =>{
})
函数定义, 不适合匿名函数的使用场景
function (){
}
驼峰式命名
let res = (function (foo,bar){ //匿名函数
console.log(foo*bar);
})(20,3);(functin(){})()做了一个分组,立即执行
console.log(res);
foo bar 值传过去
值交给外界
3. this 指向实例
4. 对象上, 原型对象都是Object
5. Obiect 是顶层对象,也是一个函数 new Object(){}
6. 任何一个函数都有一个prototype属性 火车身
7. 任何一个对象实例都一定有__proto__私有属性 任何一个对象,都有以一个原型_proto_属性会告诉我们他的原型
指向原型对象, 基于原型的
js_dontKnow.__proto__ == Book.prototype
true
js_dontKnow.__proto__.__proto__ ==Object.prototype
true
js_dontKnow.__proto__.__proto__ .__proto__
null
js_dontKnow.display();这个实例没有这个display()属性,有属性title
拥有这个方法是因为基于原型继承父类的方法
8. 原型链 只要链上有,就可以调用 js_dontKnow.toString()
Book.prototype.isPrototypeOf(js_dontKnow)//js_dontKonw是否能用Book上的原型链
js_dontKnow.hasOwnProperty('dispaly') 判断js_dontKnow是否包含dispaly属性
9. Js class 关键字只是语法糖
const attrs = [...Object.getOwnPropertyNames(jsDontKonw)];