js中的面向对象程序设计

概述

面向对象的语言有一个标志,那就是他们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。

对象的创建

1、工厂模式

//工厂模式
    function getPerson(name,age){
        //定义age不能直接访问
        var person = {
            name:name,
            _age:age,
            getName:function(){
                return this.name;
            }
        };
        Object.defineProperties(person,{
            _age:{
                value:age
            },
            age:{
                get:function(){
                    return this._age;
                },
                set:function(age){
                    this._age = age;
                }
            }

        });
        return person;
    }
        var p2 = getPerson("person2",12);
        console.log(p2.getName());

2、构造函数模式

 //构造函数模式
    function Person(name,age){
        this.name = name;
        this.age = age;
        this.getName = getName;
    }
    var p1 = new Person("person1",12);
    console.log(p1.getName());

3、原型模式

//原型模式
    function People(){};
    People.prototype = {
        name:"",
        age:0,
        getName:getName
    }
        var p3 = new People();
        p3.age = 12;
        p3.name="person3";
        console.log(p3.getName());
        console.log("sex" in p3);

4、构造函数+原型

//*构造函数+原型模式*//
    function Student(name,age){
        this.name = name;
        this.age = age;
    }
    Student.prototype ={
        constructor:Student,
        getName:getName
    }
var stu = new Student("student",18);
        console.log(stu.getName());

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏静默虚空的博客

[Java 基础]方法

方法的定义 Java方法是语句的集合,它们在一起执行一个功能。 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 ...

20170
来自专栏吾爱乐享

java之学习Integer类相关面试题

14640
来自专栏程序员互动联盟

【编程基础】C语言之指针二

指针和数组 C语言的数组表示一段连续的内存空间,用来存储多个特定类型的对象。与之相反,指针用来存储单个内存地址。数组和指针不是同一种结构因此不可以互相转换。而数...

37840
来自专栏Vamei实验室

Python补充01 序列的方法

在快速教程中,我们了解了最基本的序列(sequence)。回忆一下,序列包含有定值表(tuple)和表(list)。此外,字符串(string)是一种特殊的定值...

19680
来自专栏Vamei实验室

Java进阶04 RTTI

运行时类型识别(RTTI, Run-Time Type Identification)是Java中非常有用的机制,在Java运行时,RTTI维护类的相关信息。 ...

21370
来自专栏大闲人柴毛毛

稳扎稳打JS——this

this的值是在运行时确定的 JS中的this究竟代表什么,这是在程序运行时根据上下文环境确定,可以分为以下几种情况。 1. 全局作用域中的this 在全局作...

42550
来自专栏一“技”之长

Swift讲解专题七——函数 原

        函数是有特定功能的代码段,函数会有一个特定的名称调用时来使用。Swift提供了十分灵活的方式来创建与调用函数。事实上在Swift,每个函数都是一...

7830
来自专栏JetpropelledSnake

Python面试题之Python中的类和实例

类,在学习面向对象我们可以把类当成一种规范,这个思想就我个人的体会,感觉很重要,除了封装的功能外,类作为一种规范,我们自己可以定制的规范,从这个角度来看,在以后...

13420
来自专栏牛肉圆粉不加葱

(3) - Scala case class那些你不知道的知识

除了在模式匹配中使用之外,unapply 方法可以让你结构 case class 来提取它的字段,如:

9110
来自专栏wym

运算符重载(超详细)

C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋...

18220

扫码关注云+社区

领取腾讯云代金券