zoukankan      html  css  js  c++  java
  • js 面向对象例子

    var Book = function (id, name, price) {
            //private(在函数内部定义,函数外部访问不到,实例化之后实例化的对象访问不到)
            var num = 1;
            var id = id;
            function checkId() {
                console.log('private')
            }
            //protected(可以访问到函数内部的私有属性和私有方法,在实例化之后就可以对实例化的类进行初始化拿到函数的私有属性)
            this.getName = function () {
                console.log(id)
            }
            this.getPrice = function () {
                console.log(price)
            }
    
            //public(实例化的之后,实例化的对象就可以访问到了~)
            this.name = name;
            this.copy = function () {
                console.log('this is public')
            }
    
        }
    
        //在Book的原型上添加的方法实例化之后可以被实例化对象继承
        Book.prototype.proFunction = function () {
            console.log('this is proFunction')
        }
    
        //在函数外部通过.语法创建的属性和方法,只能通过该类访问,实例化对象访问不到
        Book.setTime = function () {
            console.log('this is new time')
        }
        var book1 = new Book('111','悲惨世界','$99')
        book1.getName();        // 111 getName是protected,可以访问到类的私有属性,所以实例化之后也可以访问到函数的私有属性
        book1.checkId();        //报错book1.checkId is not a function
        console.log(book1.id)   // undefined id是在函数内部通过定义的,是私有属性,所以实例化对象访问不到
        console.log(book1.name) //name 是通过this创建的,所以在实例化的时候会在book1中复制一遍name属性,所以可以访问到
        book1.copy()            //this is public
        book1.proFunction();    //this is proFunction
        Book.setTime();         //this is new time
        book1.setTime();        //报错book1.setTime is not a function
  • 相关阅读:
    服务器内部模拟Http请求
    面试题分类
    Linux常用命令
    css补充之hover与overflow
    css之position
    css边框及float、display样式
    css存在形式及优先级
    css选择器
    body标签之fieldest与label标签
    body内标签之table标签
  • 原文地址:https://www.cnblogs.com/zuichumx0826/p/9355399.html
Copyright © 2011-2022 走看看