美文网首页
JavaScript 面向对象编程

JavaScript 面向对象编程

作者: 尤雨溪的大迷弟 | 来源:发表于2019-05-22 17:46 被阅读0次

    写法

    function Person (name,age,sex) {
            var a = 10;//私有属性,属于Person类本身,不属于未来的那个对象
            function fn1(){};//私有方法,属于Person类本身,不属于未来的那个对象
                              //在方法面前加static静态方法,也会变成私有属性
            this.name = name;
            this.age = age;
            this.sex = sex;
            //在构造函数中指向方法效率比较低,每一次实例化,方法都相当于重新构建了一次
            // this.sayhello = function () {
            //     alert(this.name);
            // };
        }
        //构造函数在实例化的一瞬间会被对象赋予一个prototype属性,表示上一层原型
        //所以我们把方法构建在原型之上
        Person.prototype = {
            sayhello:function () {
                console.log('hello,world');
            },
            saygoodbye: function () {
                console.log('hi JS');
            }
        };
        var a = new Person('zhangsan',40,'man');
        a.sayhello();//hello,world
        a.saygoodbye();//hi JS
        console.log(a);//Person对象
    

    ES6面向对象的写法---类继承

    //class 类
        class Person {//类名
            //定义属性
            constructor(arg1,arg2) {
            //构造函数-->当你的类被实例化的瞬间就会主动的调用构造函数
                this.name = arg1;
                this.age = arg2;
                //通过构造函数对对象的属性进行赋值
            }
            //定义方法
            sayHello(par) {
                console.log(par + this.name);
            }
        }
    
        class Man extends Person {//让Man这个类继承自Person
            constructor(where,name,age) {
                super(name,age);//向父级传输数据
                this.home = where;
            }
            whyHome() {
                console.log('我的家在'+this.home+'你的呢?');
            }
        }
        let a = new Man('北京','保罗乔治','26');
        console.log(a);//Man对象
        a.sayHello('hi');//hi保罗乔治
        a.whyHome();//我的家在北京你的呢?
    

    相关文章

      网友评论

          本文标题:JavaScript 面向对象编程

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