js中的面向对象

面向对象:不了解原理的情况下,会使用功能。如:电视机,不清楚原理,却知道如何操作。面向对象是一种通用的思想,并非只有在编程使用。面向对象编程简称OOP。

js是一个基于原型的面向对象的编程语言,即每个对象有一个原型对象,对象从原型中继承属性和方法。

js的原型的关系是递归的。即,对象的原型也是一个对象,而原型的本身可能还有一个原型。

js中的对象使用一个new 运算符和一个构造函数来创建

js中可以给对象动态的添加属性和方法

js中创建对象的方法有多种,包括:原型方式,动态原型方式,工厂方式等等

实现继承机制的方式有多种,包括:对象冒充,call(),apply(),原型链等等

多用原型来创建对象

prototype对象是个模板,要实例化的对象都以这个模板为基础,总而言之,prototype对象的任何属性和方法都被传递给那个类的所有实例。原型链利用这种功能来实现继承机制

//构造函数,用来产生对象
  //定义一个对象
  function People(name,age){
  //属性
  this.name = name;
  this.age = age;
  //一个方法
  this.run = function(){
   
   
  alert(this.name + "paopaoapo");
  }
  }
   
  // People.prototype.qq="12345";//给People原型添加属性qq
  // var p1=new People("小明",18);//存储的内存地址
  // p1.age=25;
  // var p2=new People("小明2",19);//p1、p2是两个不同对象 来自同一个原型
  // p1.sex="男";
  // alert(p1.name + " " + p1.age +" " + p1.sex+" "+p1.qq+" " +p2.name + " " + p2.age+" " + p2.sex+" "+p2.qq);
  // p1.run();
  // p2.run();
   
  function Man(name,age){
  this.fight="PK";
  //调用父类的构造函数传参《不需要传参数就可以不用》
  this.constructor(name,age);
  //对象冒充法一
  // this.inherit = People;//模拟继承 调用People函数
  // this.inherit(name,age);//执行People
  // delete this.inherit;//删除inherit属性
  //对象冒充法二
  // People.call(this,name,age);//this表示Man对象
  //对象冒充法三
  // People.apply(this,[name,age]);//this表示Man对象,和call不一样的是传参数方式
  //
  }
  Man.prototype = new People();//Man的prototype<原型>为People 真实继承 原型链
   
  var m1=new Man("大胖",56);
  // m1.run();
  console.log(m1);
  // console.log(m1 instanceof Man);//对象冒充法一二三 真实继承为true
   
  console.log(m1.constructor);
  // 打出function People(name,age){
  // //属性
  // this.name = name;
  // this.age = age;
  // //一个方法
  // this.run = function(){
  // alert(this.name + "paopaoapo");
  // }
  // }
  console.log(m1 instanceof People); //对象冒充法一二三为false 真实继承为true
  // console.log(m1.__proto__.__proto__.__proto__.__proto__);//__proto__和prototype一样的
function Animal(name,age,color){
  this.name = name;
  this.age = age;
  this.color = color;
  }
  function Dog(name,age,color){
  this.dog = "狗狗";
  this.constructor(name,age,color);
  }
  function Cat(name,age,color){
  this.cat = "猫";
  this.constructor(name,age,color);
  }
  Dog.prototype = new Animal();
  Cat.prototype= new Animal();
   
  var d1 = new Dog("狗小黄",2,"green");
  var d2 = new Dog("狗小黄2",22,"green2");
  console.log(d1);
  console.log(d2);
时间: 2024-10-29 00:45:03

js中的面向对象的相关文章

谈谈JS中的面向对象

请先看看下面这段代 1 <script src="jquery.js"></script> 2 <script type="text/javascript"> 3 /** 4 * Object.create() 最近才添加进了ECMAScript第5版规范,有些浏览器不支持 5 * 这里模拟一个Object.create方法解决兼容性问题 6 * Object.create : 该方法只有一个参数,即原型对象,返回一个新对象 7

好程序员Java学习路线分享JS中的面向对象

好程序员Java学习路线分享JS中的面向对象,在JS中,一般情况下我们都是直接写函数,直接调用,但是发现JS中也有new关键字,那么new关键字作为创建对象的关键字,给我们的感觉就是在JS中可以定义一个类,然后用new创建对象,那么在JS中如何做呢?我们先看如下案例,下面的案例是写一个简单的喷泉效果的. window.onload = function(){ // 创建一个画布对象var canvas = document.createElement("canvas");// 设置大小

《JS中的面向对象技术》

内容要点: 1.什么是对象:JS权威指南学习总结-第六章 ,(有句话:一切都是对象) 2.什么面向对象 使用对象时,只关注对象提供的功能,不关注其内部细节,比如jQuery.面向对象是一种通用思想,并非只有编程中使用,任何事情都可以用. 3.JS中面向对象三大特征: 封装.继承.多态 4.JS自定义对象(三大对象两大属性): 4.1创建对象方式:方法1:对象初始化的方法,就是通过对象直接量创建的对象.方法2:通过关键字new和构造函数的方法创建对象 4.2对象属性定义:私有属性.对象属性.类属性

js中的面向对象程序设计

面向对象的语言有一个标志,即拥有类的概念,抽象实例对象的公共属性与方法,基于类可以创建任意多个实例对象,一般具有封装.继承.多态的特性!但JS中对象与纯面向对象语言中的对象是不同的,ECMA标准定义JS中对象:无序属性的集合,其属性可以包含基本值.对象或者函数.可以简单理解为JS的对象是一组无序的值,其中的属性或方法都有一个名字,根据这个名字可以访问相映射的值(值可以是基本值/对象/方法). 1.json格式的面向对象,一个命名空间:适合模块化开发插件.不同的模块使用不同的命名空间.也可用于小型

轻松理解JS中的面向对象,顺便搞懂prototype和__proto__的原理介绍

这篇文章主要讲一下JS中面向对象以及 __proto__,ptototype和construcator,这几个概念都是相关的,所以一起讲了. 在讲这个之前我们先来说说类,了解面向对象的朋友应该都知道,如果我要定义一个通用的类型我可以使用类(class).比如在java中我们可以这样定义一个类: public class Puppy{ int puppyAge; public Puppy(age){ puppyAge = age; } public void say() { System.out.

node.js中的面向对象

//这里私有对象obj;只能由方法obj2.get*()方法来访问:function Greate(name,age){var obj={name:name;age:age}var obj2={get:function(){ return obj.name } } return obj2 } 这里实例化对象,var newObj=Greate("刘美林',"小银哥)console.log(obj2.get())// 原文地址:https://blog.51cto.com/1282735

JavaScript面向对象(一)——JS OOP基础与JS 中This指向详解

  前  言 JRedu 学过程序语言的都知道,我们的程序语言进化是从"面向机器".到"面向过程".再到"面向对象"一步步的发展而来.类似于汇编语言这样的面向机器的语言,随着时代的发展已经逐渐淘汰:而面向过程的语言也只有C语言老大哥依然坚挺:现在主流的语言(例如Java.C++.PHP等)都是面向对象的语言. 而我们的JavaScript语言,恰恰介于面向过程与面向对象之间,我们称它为"基于对象"的语言.但是,JS中的OOP依

js中的hasOwnProperty()和isPrototypeOf()

js中的hasOwnProperty()和isPrototypeOf() 这两个属性都是Object.prototype所提供:Object.prototype.hasOwnProperty()和Object.prototype.isPropertyOf()先讲解hasOwnProperty()方法和使用.在讲解isPropertyOf()方法和使用 看懂这些至少要懂原型链 一.Object.prototype.hasOwnProperty() 概述 hasOwnProperty()方法用来判断

关于javascript中的面向对象

经常会听到对象和面向对象这个词.关于面向对象的一些理解,可能会比较肤浅,平时在书也看到一些相习的内容,我把整理的一些笔记分享给大家.首先,从JS的语言特征说起,js 是什么语言?首先,是基于对象的语言,如果没有对象这个概念,那么什么事情都做不了:再者,是一种脚本语言,是写出来就可以执行解析的一种语言,区别于编译语言( c, c++, java, c# ):最后,就是继承性,什么是继承性呢?通俗的说来就是把别人东西,拿过来做为自己的,为自己所用,如特征,属性,方法等,继承性:(for(var ke