前端面试JS总结

  1. 原型
    构造函数是一种特殊的方法,主要用来创建对象和初始化对象。每一个构造函数都要prototype(原型)(箭头函数以及Function.prototype.bind()没有)属性,这个prototype(原型)属性是一个指针,指向一个对象,这个对象的用途是包函特定类型的所以实力共享的属性和方法,即这个原型对象是用来给实例对象共享属性和方法的。每一个实例对象的_proto_都指向这个构造函数/类的prototype属性
    面向对象的三大特性:继承/多态/封装
    关于new操作符:
    1. new执行的函数,函数内部默认生成了一个对象
    2. 函数内部的this默认指向了这个new生成的对象
    3. new执行函数生成的这个对象,是函数的默认返回值
      ES5例子:
function Person(obj){
	this.name = obj.name
	this.age = obj.age
}

原型方法

Person.prototype.say = function(){
	console.log('你好',this.name)
}

p为实例化对象,new Person()这个操作为构造函数的实例化

let p = new Person({name: '张三',age:'12'})
console.log(p.name,p.age)
p.say()

ES6例子

class Person(
	constructor(obj){
		this.name = obj.name
		this.age = obj.age
	}
	say() {
		console.log(this.name)
	}
)
let p = new Person({name:'张三',age:'12'})
console.log(p.name,p.age)
p.say()

1.什么是构造函数
在JavaScript中,用 new 关键字来调用的函数,称为构造函数。首字母一般大写;

2.为什么要用构造函数
如下:
像下面这样,我们可以把每一位同学的信息当做一个对象来处理。但是,我们会发现,我们重复地写了很多无意义的代码。比如 name、age、gender、hobby 。如果这个班上有60个学生,我们得重复写60遍。

   var p1 = { name: 'a', age: 6, gender: '男', hobby: 'basketball' };
   var p2 = { name: 'b', age: 6, gender: '女', hobby: 'dancing' };
   var p3 = { name: 'c', age: 6, gender: '女', hobby: 'singing' };
   var p4 = { name: 'd', age: 6, gender: '男', hobby: 'football' };

这个时候,构造函数的优势就体现出来了。我们发现,虽然每位同学都有 name、gender、hobby这些属性, 但它们都是不同的,那我们就把这些属性当做构造函数的参数传递进去。而由于都是一年级的学生,age 基本都是6岁,所以我们就可以写死,遇到特殊情况再单独做处理即可。此时,我们就可以创建以下的函数

	function Person (name,gender,hobby) {
          this.name = name;
          this.gender = gender;
          this.hobby = hobby;
          this.age = 6;
    }

创建上面的函数后,可以通过 new 关键字调用, 也就是说通过构造函数来创建对象;

     var p1 = new Person ('a','男','basketball');
     var p2 = new Person ('b','女','dancing');
     var p3 = new Person ('c','女','singing');
     var p4 = new Person ('d','男','football');

  1. 闭包

首先说明什么是闭包,闭包简单来说就是函数嵌套函数,内部函数引用来外部函数的变量,从而导致垃圾回收
机制没有把当前变量回收掉,这样的操作带来了内存泄漏的影响,当内存泄漏到一定程度会影响你的项目运行
变得卡顿等等问题。因此在项目中我们要尽量避免内存泄漏。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜天生i

如果本文对你有所帮助点赞就好~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值