IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 海康威视面试 -> 正文阅读

[JavaScript知识库]海康威视面试

1、原型?

??????前端面试必问——JS中的原型(prototype)、原型链和继承_cuckooii的博客-CSDN博客

一、原型

这个图片生动的表达了js中的构造函数、实例对象以及原型对象的关系

每个对象都有_proto_属性,并且?指向它的原型对象

每个构造函数都有它的prototype原型对象

prototype原型对象里的constructor指向它的构造函数

new一个构造函数会形成它的实例对象。

代码理解:

function Person(name,age){
     this.name=name;
     this.age=age;
}
 
var p1=new Person('小满',18);
var p2=new Person('大雪',20);
        
console.log(p1,p2)
console.log(Person.prototype);
console.log(p1.__proto__);
 
console.log(p1.__proto__===Person.prototype);
console.log(p2.__proto__===Person.prototype);
console.log(p1.__proto__===p2.__proto__);
 
console.log(p1.__proto__.constructor);
console.log(Person.prototype.constructor);

这段代码的输出结果如下:

由上述代码我们不难看出,prototype原型对象是一个公共容器,特定类型所有实例对象都可以访问。

二、原型链?

什么是原型链,从概念上来看:每个对象都有一个原型,这个原型还可以有它自己的原型,以此类推,形成一个原型链。

那么什么时候会用到原型链呢?当我们查找特定属性的时候,我们先去这个对象里找,如果没有的话就去它的原型对象里面去,如果还是没有的话再去原型对象的原型对象里去寻找....这个操作就是背委托在整个原型链上。

如果没找到,会一直找下去吗?原型链是有终点的,不会一直找下去,当Object.prototype.__proto__===null时,查找结束,返回undefined

二、实例对象,先调用执行构造函数还是原型

三、原型属性和方法,实例属性和方法

原型属性和方法:所有人共同使用一个

实例属性和方法:每个人都有一份

静态属性和方法:不能在类的实例上调用静态方法,而应该通过类本身调用

1、实例属性指的是在构造函数方法中定义的属性和方法,每个实例对象都独立开辟一块内存空间用于保存属性和方法。

function Products() {
    this.name = 'car',
    this.ids = [1,2]
}
var product1 = new Products();
var product2 = new Products();
product1.ids[0] = 3;
console.log(product1.ids); //[3,2]
console.log(product2.ids); //[1,2]

2、原型属性指的是用于创建实例对象的构造函数的原型的属性,每一个创建的实例对象都共享原型属性

function Products() {
    this.name = 'car',
    this.ids = [1,2]
}
Products.prototype.type = ['a', 'b'];
var product1 = new Products();
var product2 = new Products();
product1.type[0] = 'c';
console.log(product1.type); //["c", "b"]
console.log(product2.type); //["c", "b"]

四、ES6新特性

1、let、const,block作用域

let允许创建块级作用域(最靠近的一个花括号内有效),不具备变量提升,不允许重复声明

const允许创建块级作用域,变量声明不提升,const在声明时必须被赋值,声明时大写变量,const声明的变量会被认为是常量,意思是它的值被设置完成后就不能再修改了

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:22:20  更:2021-09-23 11:24:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 21:37:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码