美文网首页
JS对象分类

JS对象分类

作者: 郑馋师 | 来源:发表于2019-09-29 19:11 被阅读0次

分类原因:
分类就可以少占内存

new语法

将函数与原型结合

函数的特征

  1. 都有prototype属性,存储原型地址
  2. 每个prototype都有一个constructor属性,是来告诉别人构造这个属性的爹是谁

new语法的写法和特征

newX()
特征

  1. 自动创建一个新的对象
  2. 自动为空对象关联原型,原型地址为X.prototype
  3. 自动将不知道叫什么的空对象,作为this语法的关键字,来运行构函数(构造函数是指创建对象的函数)
  4. 自动return this
    eg.
function Person(name, age) {//()里写变量名,function Person{}里面写自身所有属性
  this.name = name;
  this.age = age;
}
Person.prototype.sayHi = function() {//这里Person.prototype.后面加共有属性的名字,且下面写的是共有属性
  console.log("你好,我叫" + this.name);
};
let person = new Person("frank", 18);
person.name === "frank"; // true
person.age === 18; // true
person.sayHi(); // 打印出「你好,我叫 frank」

构造函数X(名字为X)

  1. X函数本身负责给对象添加属性
  2. X.prototype对象负责保存对象的共有属性

规范

  1. 大小写
  • 所有构造函数首字母大写,被构造的对象首字母小写
  1. 词性
  • 构造函数中,new后面的函数名字为名词
    eg
    new Person()
  • 其他函数用动词开头
    eg.
    createSquare
    Tips:
    Js构造函数不一定只有一个参数,具体的可以看mdn文档

class 语法

  1. JS 构造对象目前有两种方式,一种是用构造函数+prototype(new语法),一种是用 class,关于这两种方式,两者方式 JS 都支持,JS 是一门包容的语言,提供了多种表达形式,两者方式都能表达程序员的思想。
  2. 构造函数+prototype 是先提供的,class 是后提供的,说明 构造函数+prototype 是 JS 一开始的基因,而 class 的粉丝其实更喜欢 class,所以两种都有必要学习。
    class是es6新出的功能,与prototype那个语法功能相同
    eg.
  constructor(name, age) {//()里面写的是变量名
    this.name = name;//{}constructor里面写的是自身所有属性
    this.age = age;
  }
  sayHi() {//constructor外面外面这里写的是公有属性,Sayhi是共有属性的名字
    console.log("你好,我叫" + this.name);
  }
}
let person = new Person("frank", 18);
person.name === "frank"; // true
person.age === 18; // true
person.sayHi(); // 打印出「你好,我叫 frank」

数组对象

  1. 定义数组
let arr=[1,2,3]===let arr=new Array(1,2,3)

2.自身属性:长度(无法用object.keys查出)

  1. 常用API,上mdn查

函数

  1. 定义函数
    eg.
function fn(x,y){return x+y}
===let fn=function fn(x,y){return x+y}
===let fn=(x,y)=>{x+y}
## 原型公式
如何确定原型:

let obj=new Object()

new什么,就是什么.prototype,比如这里就是Object.prototype
对象.___proto___===构造函数.prototype
## 坑
1. 属性不等于属性值,属性是名,是key,属性值是值。
2. JS类型不等于JS分类,类型是四基而空一对象,分类的是只有对象有分类,
JS 中的类型有:数字、字符串、布尔、符号Symbol、null、undefined、对象
 JS 中的类有:对象 Object、数组 Array、函数 Function 等
3. Object.prototype
* 是一个对象(这么说不严谨,应该说 Object.prototype 保存着一个对象的地址)
* 包含了 toString、valueOf、hasOwnProperty 等对象共有的属性
* Object.prototype 是所有对象的原型(除了它自己)
* Object.prototype 自己的原型为 null,Object.prototype 是根对象
4. window.Object 是一个函数对象,那么这个函数对象的构造函数是Function
5. window.Function 是一个函数对象,那么这个函数对象的构造函数是Function
6. window.Object 是一个函数对象,那么这个对象的 __proto__ 是Function.prototype
7. window.Function 是一个函数对象,那么这个对象的 __proto__ 是Function.prototype

相关文章

  • javascripts面向对象基础

    js中对象的分类 对象的分类: 1.内置对象:由ECMA实现 的,不依赖于宿主环境的对象,这些对象在js程序执行之...

  • JS对象分类

    分类原因:分类就可以少占内存 new语法 将函数与原型结合 函数的特征 都有prototype属性,存储原型地址 ...

  • JS对象分类

    推荐几篇文章ES6新特性总结[https://fangyinghang.com/es-6-tutorials/]J...

  • 四、面向对象编程

    js的面向对象,有其独特之处。js不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程。如:...

  • js原型、原型链

    为什么需要对象分类? 类型是对 JS 中数据的分类JS 中的类型有:数字、字符串、布尔、符号Symbol、null...

  • JavaScript中对像的属性

    在JavaScript中,对象是属性的无序集合,通过对JS属性的理解可以更好地了解JS对象。 属性的构成与分类 在...

  • 【六】JavaScript对象:你知道全部的对象分类吗?

    JavaScript 中的对象分类 宿主对象:由JS宿主环境提供的对象,它们的行完全由宿主环境决定 内置对象:由J...

  • JS基本语法

    1、分类ECMAScript js基本语法与标准DOM Document Object Model文档对象模型BO...

  • JS基本语法

    1、分类 ECMAScript js基本语法与标准DOM Document Object Model文档对象模型B...

  • 第三课 js美化网页

    再议js对象 对象的分类: 1.内建对象 内建对象指由ES标准定义的对象,任何对ES标准的实现都可以使用这些对象 ...

网友评论

      本文标题:JS对象分类

      本文链接:https://www.haomeiwen.com/subject/wwupuctx.html