JavaScript学习笔记

常见问题

1、原型
2、如何继承
3、promise与async awai区别
4、防抖和节流的区别
5、介绍flex布局
6、css实现垂直居中
7、实现深拷贝与浅拷贝
8、介绍观察者模式
9、通过什么做到并发请求
10、介绍service worker
11、介绍下Promise,内部实现,优缺点
12、介绍事件代理以及优缺点
13、HTTP和HTTPS的区别
14、vue里key主要是解决哪一类的问题,为什么不建议用索引index
15、从输入URL到页面加载全过程
16、对TCP三次握手和四次挥手的理解
17、bind、call、apply的区别
18、两个对象如何比较
19、Async里面有多个await请求,可以怎么优化
20、取数组的最大值(ES5、ES6)
21、手写数组去重函数
22、jsonp的介绍,为什么不能用post
23、介绍this
24、介绍闭包,使用场景
25、get和post有什么区别
26、实现一个三角形
27、javascript事件循环

javascript原型

function Person() {

}
var person1 = new Person();
person1.name = 'Kevin';
console.log(person1.name)

Person 就是一个构造函数, person1是一个实例对象。
每个函数都有一个 prototype 属性, 这个属性指向了一个对象,这个对象正是调用该构造函数而创建的实例的原型,也就是person1的原型。

那什么是原型呢?你可以这样理解:每一个JavaScript对象(null除外)在创建的时候就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型"继承"属性。
面向对象
对象有两种属性:数据属性和访问器属性
1.数据属性
通过object.defineProperty(obj, 'newkey', {configurable:true, enumrable: true, writable: true, value: 'newvalue'})可以给对象的属性添加属性、删除属性、对属性进行拦截
configurable: 设置是否可以删除属性
enumrable:设置是否可以for in查询
writable: 设置是否可以修改属性
value:返回这个属性的数据值,默认返回undefined
调用object.defineProperty如果不指定,前三个行为都默认会false


2.访问器属性
getter,setter与value不能同时存在
object.defineProperty(obj, 'newkey', {configurable:true, enumrable: true, set: function(){}, get:function(){}})

// 设置多个属性
var json = {}
object.defineProperties(json, {
  name:{
    value: 'xiaoming'
  },
  age: {
    value: 20
  },
  sex: {
    get: function(){
      return 'boy'
    },
    set: function(newVal){
      if(newVal === 'girl'){
        this.name = 'xiaohong'
      }
    }
  }
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值