js面向对象编程

野性酷女 2022-07-12 12:18 281阅读 0赞

js中没有类的概念,但是却能够创建对象,并实现继承,封装,多态的特点。
因为在js中所有的函数既可以当成是构造函数,也可以当成普通函数调用,当函数当成构造函数调用时,该函数就可以被当成所有对象的基类。
封装

  1. function shape(name) {
  2. this.name = name;
  3. this.toString = function (){
  4. return this.name;
  5. }
  6. }

属性和方法都封装在构造函数中,创建对象的时候对象的时候,对象中也能够访问这些方法和属性。

  1. var myShape = new shape('myshape');

1: js中准确判断数据类型

  1. Object.prototype.toString.call(var).slice(8,-1).toLowerCase()

返回值”object”,”array”,”function”,”null”,”undefined”,”string”,”number”,”boolean”

2:js 中f.prototype.constructor = f用法的原理

  1. function Dog(name) {
  2. this.name = name;//私有属性
  3. }
  4. Dog.prototype.say = function() {
  5. alert(this.name);
  6. }
  7. var dog1 = new Dog('豆豆');

dog1能访问到Dog构造函数和原型中定义的方法和属性。
此时重写Dog.prototype,

  1. Dog.prototype = {
  2. hair: true,
  3. tags: true
  4. }
  5. var dog2 = new Dog('萌萌');

那么dog1不能访问新的原型中的方法和属性,dog2能访问新的原型中的方法和属性,但是不能访问之前定义的方法和属性,而且此时

  1. dog3.constructor ->
  2. function Object() { [native code]}
  3. dog1.constructor ->
  4. function Dog(name) {
  5. this.name = name;
  6. }

要想让

  1. dog3.constructor ->
  2. function Dog(name) {
  3. this.name = name;
  4. }

解决方法是

  1. Dog.prototype.constructor = Dog;

–未完待续

发表评论

表情:
评论列表 (有 0 条评论,281人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JS面向对象编程

    让前端开发者最熟悉又最陌生的就是js的面向对象编程了吧,很多人对面向对象编程一脸茫然,并自嘲只会面向过程编程,面向测试编程,面向业务编程。其实面向对象在平时开发中无处不在,因为

    相关 js面向对象编程

    js中没有类的概念,但是却能够创建对象,并实现继承,封装,多态的特点。 因为在js中所有的函数既可以当成是构造函数,也可以当成普通函数调用,当函数当成构造函数调用时,该函数

    相关 js面向对象编程详解

    什么是面向对象编程(OOP)? 用对象的思想去写代码,就是面向对象编程 面向对象编程的特点 1. 抽象:抓住核心问题(把一样的放在一起) 2. 封装:只能通过对象来访

    相关 怎么理解js面向对象编程

    [怎么理解js的面向对象编程][js] 面向对象的语言有一个标志,即拥有类的概念,抽象实例对象的公共属性与方法,基于类可以创建任意多个实例对象,一般具有封装、继承、多态的

    相关 js面向对象编程

    js面向对象编程 一、面向对象编程 1.面向过程与面向对象 1)面向过程:专注于如何解决一个问题的过程步骤,编程特点是由一个个函数去实现每一步的过程步骤,没有类和对象的概...