分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

JS面向对象编程

发布时间:2023-09-06 01:19责任编辑:郭大石关键词:面向对象

JavaScript不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程。

原型是指我们想要创建xiaoming这个具体的学生时,我们并没有一个student类型可用,那怎么办?恰好有这么一个现成的对象:

    var robot = { ???????????name:‘Robot‘, ???????????height:1.6, ???????????run:function(){ ???????????????console.log(this.name+‘is running...‘); ???????????} ???????};

我们可以把它改名为student,然后创建出小明:

    ?var Student = { ???????????name:‘Robot‘, ???????????height:1.6, ???????????run:function(){ ???????????????console.log(this.name+‘is running...‘); ???????????} ???????}; ???????var xiaoming={ ???????????name:"小明" ???????}; ???????xiaoming._proto_=Student;

最后一行代码把xiaoming的原型指向了对象Student,看上去xiaoming仿佛是从Student继承下来的:

    ??xiaoming.name;//‘小明‘ ???????xiaoming.run();//小明is running...

xiaoming有自己的name属性,但是并没有定义run()方法,不过,由于小明是从Student继承而来,只要Student有run()方法,小明也可以调用:

JavaScript的原型链和java的Class区别就在于,它没有Class的概念,所有对象都是实例,所谓继承关系不过是把一个对象的原型指向另一个对象而已。

如果你把xiaoming的原型指向其他对象

var Bird = { ???fly: function () { ???????console.log(this.name + ‘ is flying...‘); ???}};xiaoming.__proto__ = Bird;

现在的xiaoming已经无法run()了,他已经变成了一只鸟:

xiaoming.fly();//小明 is flying...

 在JavaScript代码运行时期,你可以把xiaoming熊student变成bird,或者变成任何对象。

在编写JavaScript时,不要直接用obj._proto_去改变一个对象的原型,并且,低版本的IE页无法使用_proto_。Object.create()方法可以传入一个原型对象,并创建一个基于该原型的新对象,但是新对象什么属性都没有,因此,我们可以编写一个函数来创建xiaoming:

    //原型对象: ???????var Student = { ???????????name:‘Robot‘, ???????????height:1.2, ???????????run:function(){ ???????????????console.log(this.name+‘is running...‘); ???????????} ???????}; ???????function createStudent(name){ ???????????//基于Student原型创建一个新对象: ???????????var s = Object.create(Student); ???????????//初始化对象 ???????????s.name=name; ???????????return s; ???????} ???????var xiaoming=createStudent(‘小明‘); ???????xiaoming.run();//小明 is running... ???????xiaoming._protp_===Student;//true

JS面向对象编程

原文地址:http://www.cnblogs.com/yuanxinru321/p/7726377.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved