美文网首页
JS实例属性/方法、静态属性/方法、私有属性/方法、原型属性/方

JS实例属性/方法、静态属性/方法、私有属性/方法、原型属性/方

作者: David_Rao | 来源:发表于2020-01-10 14:21 被阅读0次

实例属性/方法 & 静态属性/方法

  • 实例属性/实例方法
    通过对象调用
  • 静态属性/静态方法
    用类名直接调用
<script>
    function Person(name, age, doFunc) {
        // 实例属性和方法
        this.name = name;
        this.age = age;
        this.doFunc = doFunc;
        if(!Person.personCount){
            Person.personCount = 0;  // 静态属性
        }
        Person.personCount++;
    }

    // 静态方法
    Person.printPersonCount = function () {
        console.log('总共创建了' + Person.personCount + '个人');
    };

    var p1 = new Person('张三', 18, function () {
        console.log("大家好我是张三");
    });

    var p2 = new Person('李四', 18, function () {
        console.log("大家好我是李四");
    });

    Person.printPersonCount();
</script>

私有属性/方法

对象外部无法访问

<script>
    function Caculator() {
        // 1. 私有属性
        var result = 0;
        // 2. 私有方法
        function checkNum(num) {
            var isNum = typeof num === 'number';
            if(!isNum){
                alert('输入有误');
            }
            return isNum;
        }

        this.add = function (num) {
            if(checkNum(num)){
                result += num;
            }
            return this;
        };
        this.minus = function (num) {
            if(checkNum(num)){
                result -= num;
            }
            return this;
        };
        this.logResult = function () {
            console.log(result);
            return this;
        };
        this.cleanResult = function () {
            result = 0;
            return this;
        }
    }

    var c = new Caculator();
    c.add(2).add(3).minus(1);
    c.logResult();  // 4
    console.log(c);
    console.log(c.result);  // undefined
</script>

原型属性/方法

实例属性/方法是被所有对象所共用的,所以无所谓的实例、静态、私有的说法

<script>
    function Person(options) {
        this._init(options);  // 调用原型方法
    }
    Person.prototype = {
        ID: '001',  // 原型属性
        _init: function (options) {  // 原型方法
            this.name = options.name;  // 实例属性
            this.age = options.age;  // 实例属性
            this.gender = options.gender;  // 实例属性
            this.run = function () {  // 实例方法
                console.log(this.name + '会跑');
            }
        },
        eat: function () {  // 原型方法
            console.log(this.name + '会吃');
        }
    };
    Person.prototype.fly = function () {  // 原型方法
        console.log(this.name + '会飞');
    };
    Person.prototype.hobby = 'Basketball';  // 原型属性

    var david = new Person({'name': 'David', 'age': 18, 'gender': '男'});

    console.log(david.ID);
    console.log('name:', david.name, ',age:', david.age, ',gender:', david.gender, ',hobby:', david.hobby);
    david.eat();
    david.run();
    david.fly();
</script>

相关文章

  • JS实例属性/方法、静态属性/方法、私有属性/方法、原型属性/方

    实例属性/方法 & 静态属性/方法 实例属性/实例方法通过对象调用 静态属性/静态方法用类名直接调用 私有属性/方...

  • es6-60行代码帮你梳理es6中class的基本语法

    语法 总概: 实例属性和实例方法 静态属性和静态方法 私有属性和私有方法 new.target用来判断是否通过ne...

  • ES6中Class的基本语法及与ES5中Cass的区别

    目录 简介 静态方法 实例属性的新写法 静态属性 私有方法和私有属性 new.target属性 一、简介 类的由来...

  • 静态成员

    原型成员:原型对象上的属性或者是方法。实例成员:实例对象上的属性或者方法。静态成员:直接添加在构造函数上的属性和方...

  • python中OOP的类属性和方法与多态

    目录 类的结构 类属性和实例属性 类方法和静态方法 多态 私有属性和私有方法 01. 类的结构 1.1 术语 ——...

  • 30-类属性、实例属性

    类属性、实例属性 实例方法、类方法、静态方法

  • 原型继承

    一、原型判断方法*术语解释:成员=属性+方法实例成员:实例属性和实例方法原型成员:原型对象属性和原型对象方法1、原...

  • 面向对象编程

    主要包括: 基本概念 属性私有化(类的封装) 实例属性与类属性 静态方法、类方法、与实例方法 继承与多态 获取对象...

  • 类方法 VS 静态方法

    类对象、实例对象、类属性、实例属性、类方法、实例方法、静态方法。 @staticmethod@classmetho...

  • Python面向对象编程

    类相关知识 对象相关知识 类属性增删改查 实例属性增删改查 对象与实例属性 静态属性 类方法 静态方法 组合 继承...

网友评论

      本文标题:JS实例属性/方法、静态属性/方法、私有属性/方法、原型属性/方

      本文链接:https://www.haomeiwen.com/subject/tpwpactx.html