美文网首页
面向对象小知识

面向对象小知识

作者: MGd | 来源:发表于2017-03-29 19:27 被阅读8次
  • instanceOf
  • 作用:判断某个对象是否是由指定的构造函数创建出来的
  • 使用方法:对象 instanceOf 构造函数
  • 例子:
function Person(name,age) {
        this.name = name;
        this.age = age;
    }
    function Dog(name,age) {
        this.name = name;
        this.age = age;
    }
    var obj1 = new Person("张三",20);
    var obj2 = new Dog("旺财",1);
 console.log(obj1 instanceof Person);       //true
    console.log(obj2 instanceof Person);       //false
    console.log(obj1 instanceof Dog);          //false
    console.log(obj2 instanceof Dog);       //true
  • 构造函数注意事项
  • 1.在使用构造函数的时候必须加上new 如果不加上new 那么可能会出错,内部就不会创建新的对象,内部的this指向的是window。
  • 2 this : 如果使用new调用构造函数,那么this指向的是新创建的对象。如果普通调用,this指向的是window。

再次强调什么是原型对象

  • 什么是原型对象
  • 每个构造函数默认都有一个和它相关联(<->)的对象,这个对象被称为构造函数的原型对象。
    构造函数找原型对象:prototype
    原型对象找构造函数:constructor
    这个原型对象本身是一个对象,这个对象是Object类型,有一个构造器属性(constructor)
  • 原型对象的特点
    构造函数的原型对象上面的属性和方法会被该构造函数创建的所有对象共享
  • 如何访问原型对象
构造函数.prototype
对象.__proto__
Object.getPrototypeOf(对象)
  • 如何使用原型对象
    利用对象的动态特性
    使用字面量的方式来直接替换
  • 原型对象-构造函数-对象
  • 实例化:使用构造函数创建对象的过程
  • 实例(对象):
    使用构造函数创建出来的对象被称为该构造函数的一个实例对象。
  • 注意点:我们在说实例对象的时候,需要指明构造函数
    例如:某个对象是哪个构造函数的实例对象
  • 实例成员:实例对象上面的属性和方法
    原型成员:构造函数原型对象上面的属性和方法
  • hasOwnProperty
  • 作用:是否拥有指定的实例属性(不包含原型成员)
  • 使用方法:对象.hasOwnProperty("实例属性")
  • in关键字
  • 检查对象中是否存在某个指定的属性(实例成员 + 原型成员)
  • 使用方法:"实例成员或原型成员" in 对象
  • delete关键字
  • 作用:删除对象中的属性
  • 使用方法:delete 对象.属性
  • 注意:
    删除没有使用var声明的变量
通常情况下,声明变量需要使用var关键字,默认所有的全局变量都会成为window的属性
特殊情况下,不适用var直接赋值也能声明一个变量 ,默认会成为一个全局的变量

使用var声明的全局变量可以被删除吗? 不可以
直接添加在window上面的属性可以被删除吗? 可以

  • 例子:
 function Person(name) {
        this.name = name;
    }
    Person.prototype.hi = "hi";
    var p1 = new Person();
语法 对象.hasOwnProperty("属性")
    console.log(p1.hasOwnProperty("name")); //true
    console.log(p1.hasOwnProperty("age"));  //false
    console.log(p1.hasOwnProperty("hi"));   //false
语法 “属性” in 对象
    console.log("name" in p1);           //true
    console.log("age" in p1);            //false
    console.log("hi" in p1);              //true
  • isPrototypeOf
  • 作用:判断是否是原型对象。
  • 使用方法: isPrototypeOf(对象)
  • 构造器属性(constructor)
  • 对象的constructor是原型对象上面的constructor属性,对象本身并没有这个属性
  • 构造函数的原型对象(相互关联),原型对象通过constructor属性(自己的)来关联构造函数
  • 原型对象上面有两个构造器属性(自己的 + 原型的)
  • Object.create()
  • 作用:创建对象并且设置原型对象
  • 使用方法:创建一个空的对象o,并且设置这个对象的原型对象是obj
  • 例子:var o = Object.create(obj);
  • 注意:兼容性处理(ES5)
  • Object.assign()
  • 作用:用来拷贝属性的,一次性拷贝多个对象的属性
  • 用法:Object.assign(目标对象,要拷贝属性的对象1,要拷贝属性的对象2,要拷贝属性的对象3)
  • 注意点:
    新特性有兼容性问题
    原型成员是否能够拷贝 不能(默认不会拷贝原型成员)
    使用for..in遍历拷贝对象的时候,会连同该对象的原型成员一起拷贝
  • call和apply函数(重要)
  • 来源:所有的对象方法都拥有这两个函数(方法),这两个方法写在Function.prototype上面
  • 作用:借用其他对象的方法
  • 用法:
    对象1.方法.call(借用者对象,参数1,参数2,参数3...)
    对象1.方法.apply(借用者对象,[参数1,参数2,参数3...])
  • 区别(传递参数):
    参数传递不一样
    期望的形参长度不一样:
    * 函数.length 形参的个数
    * call:length 1 期望传递一个参数
    * apply:length 2 期望传递两个参数

相关文章

  • 面向对象小知识

    instanceOf 作用:判断某个对象是否是由指定的构造函数创建出来的 使用方法:对象 instanceOf 构...

  • 面向对象小知识2

    Array.isArray() 作用:判断某个对象是否是数组 使用方法:Array.isArray(对象) 返回值...

  • JS面向对象——面向对象知识

    1. 程序设计的方法 常见的设计方法有面向流程与面向对象。 1.1 面向过程 以程序的过程为中心,采用自定而下逐步...

  • “老奶奶”的python学习笔记(12)

    知识体系 第12关:面向对象编程 知识点 面向对象编程(Object Oriented Programming) ...

  • 面向对象、设计原则、设计模式、编程规范、重构,这五者有何关系?

    面向对象 主流编程范式分为以下3种 面向对象 面向过程 函数式编程 面向对象需要掌握的7个知识点 面向对象四大特性...

  • Python学习-面向对象

    查看所有Python相关学习笔记 面向对象 面向对象知识点汇总: 面向对象静态属性实例属性(self)静态方法(@...

  • 软件设计

    知识点分数说明比例面向对象12面向对象基本概念、面向对象分析与设计、UML、设计模式16.00%软件工程基础知识1...

  • 开发小知识(二)

    开发小知识(一) 开发小知识(二) 目录 五十一、关联对象 五十二、TCP 面向连接的本质是什么?TCP 和 UD...

  • Java面试题基础知识篇

    1Java 基础知识面向对象→ 什么是面向对象面向对象、面向过程 略面向对象的三大基本特征和五大基本原则答java...

  • js面向对象

    本文将循序渐进的介绍js面向对象的基础知识。 什么是面向对象呢? 面向对象编程 (OOP : Object Ori...

网友评论

      本文标题:面向对象小知识

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