博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript基于对象(面向对象)<一>类和对象
阅读量:6373 次
发布时间:2019-06-23

本文共 1980 字,大约阅读时间需要 6 分钟。

javascript中一切皆对象,比如:Array,Date.....这些都是对象。javascript中没有class的定义,function既是定义函数,也可以是定义类。function Obj(){}可以是定义了一个Obj函数,也可以是定义了一个Obj类。 既function obj(){}为最简单的创建类。

一下案例演示的截图来自Nodejs的命令行,不懂Nodejs不影响阅读

JS中构建类的最基本方法:

/*最基本类的定义*/function person(){    this.age;      //定义类属性};    var p_1 = new person(); //根据已定义类创建对象p_1.name = "Tom";       //对象动态赋值属性p_1.age = 18;           //属性赋值/*输出对象属性值*/console.log("His name is " + p_1.name + " " + p_1.age + " years old this year.");
View Code

*****************************************************************************************************************

工厂创建对象:

抽取一类对象共有的属性,方法封装成一个工厂方法(函数)。

工厂就好比一个模具,通过工厂这个模具创建多个对象。

/*创建工厂*/function createPet(name,color){    var pet = new Object();         //创建对象    pet._name = name;               //创建对象属性    pet._color = color;    /*创建对象方法*/    pet.sayHi = function(){        console.log("一只" + pet._color + pet._name + "向你问好!");    }    return pet;                     //返回一个对象}var cat = createPet("猫咪","白色");     //用工厂创建对象cat.sayHi();                            //调用对象方法var dog = createPet("小狗","黑色");     dog.hobby = "吃骨头";                   //创建该对象特有属性dog.sayHi();        console.log(dog.hobby);
View Code

工厂创建对象缺点:

每次创建一个新对象,都需要调用一次工厂方法,有些浪费内存。

*****************************************************************************************************************

原型与原型链:

prototype原型对象(原型类)。原型对象(原型类)prototype可以理解为一个抽象类,是由prototype原型对象(原型类)创建的所有对象的抽象类。

function person(){ this.name = "stu_name"; }    //创建person类person.prototype.profession = "student";        //创建person类原型属性,并赋值var tea = new person();                         //创建对象tea.name = "teach";                             //重新赋值name属性tea.profession = "teacher";                     //重新赋值profession属性console.log(tea.name + "  " + tea.profession);  //输出内容
View Code
  1. prototype定义的属性属于原型对象(原型类)。
  2. prototype属性只能通过原型对象(原型类)修改其值,不可通过原型对象(原型类)创建出来的对象修改prototype属性。
  3. prototype属性一旦修改则会影响所有通过该原型对象(原型类)创建出来的对象。

 

转载于:https://www.cnblogs.com/MirageFox/p/5511958.html

你可能感兴趣的文章
移动端事件
查看>>
QTextEdit无法在Notify()函数响应
查看>>
php常用函数记录
查看>>
利用java8实现一个日期工具类
查看>>
js面试题
查看>>
分布式计算入门知识
查看>>
APIView源码分析(小梅老师版本)
查看>>
20个CAD绘图技巧问答
查看>>
基于springMVC简单的请求和响应
查看>>
超实用的 Nginx 极简教程,覆盖了常用场景
查看>>
linux和windows互传文件 、用户配置文件和密码配置文件 、用户组管理 、用户管理...
查看>>
二.Servlet生命周期方法
查看>>
mysql 按周统计
查看>>
0518第二十一次课:LNMP 3
查看>>
CRM中间件里的CSA队列有什么用
查看>>
Salesforce平台支持多租户Multi tenant的核心设计思路
查看>>
sharding-jdbc源码解析之spring集成
查看>>
spring源码解析bean初始化与依赖注入三
查看>>
redis开启远程访问
查看>>
sql左链接、内链接、右链接、全链接
查看>>