鍍金池/ 問答/C++  HTML/ 幫忙看下這個(gè)變量在面向?qū)ο罄锝惺裁矗?/span>

幫忙看下這個(gè)變量在面向?qū)ο罄锝惺裁矗?/h1>

幫忙看看下面的js oop代碼中 對(duì)私有變量、實(shí)例變量、靜態(tài)變量、公共變量詮釋的對(duì)不對(duì)。
另外幫忙看下a變量是什么變量?在oop里叫什么變量?

var Oop = (function () {

  var a = 'A'

  function Oop() {
    // private私有變量
    var _private = 'private'

    // 實(shí)例變量
    this.name = 'james'
  }

  vue.prototype = {
    constructor: Oop,
    consoleName: function () { // public公共方法、公有方法
      console.log(this.name)
    }
  }

  Oop.staticFunc = function () { } // static靜態(tài)方法

  return Oop
})()

回答
編輯回答
奧特蛋
嚴(yán)格來講,JavaScript 中沒有私有成員的概念;所有對(duì)象屬性都是公有的。不過,倒是有一個(gè)私有變量的概念。任何在函數(shù)中定義的變量,都可以認(rèn)為是私有變量,因?yàn)椴荒茉诤瘮?shù)的外部訪問這些變量。

私有變量包括函數(shù)的參數(shù)、局部變量和在函數(shù)內(nèi)部定義的其他函數(shù)。

    var Oop = (function () {
    
      var a = 'A'// 靜態(tài)私有變量,因?yàn)槊總€(gè) Oop 的實(shí)例共享同一個(gè) a
    
      function Oop() {
        // private私有變量,實(shí)例變量
        var _private = 'private'    

        this.name = 'james'
      }
    
      Oop.prototype = {//此處應(yīng)為 Oop 非 vue
        constructor: Oop,
        consoleName: function () { // public公共方法、公有方法
          console.log(this.name)
        }
      }
    
      Oop.staticFunc = function () { } // static靜態(tài)方法
    
      return Oop
    })()

另外,還有個(gè)特權(quán)方法

function MyObject(){
//私有變量和私有函數(shù)
    var privateVariable = 10;
    function privateFunction(){
        return false;
    }
//特權(quán)方法(可以訪問私有變量和函數(shù)的公有方法)
    this.publicMethod = function (){
        privateVariable++;
        return privateFunction();
    };
}

摘自JavaScript高級(jí)程序設(shè)計(jì)-第3版-中

2017年1月13日 20:39
編輯回答
陌顏

a這個(gè)變量在 java 等編程語言中應(yīng)該是不存在的,1 他不在Oop里面 所以不算私有變量和實(shí)例變量,他也不會(huì)被類所調(diào)用,也不屬于靜態(tài)變量,更不會(huì)被外界調(diào)用了
但是可以把 版本信息 作者與邏輯無關(guān)的 什么的 存儲(chǔ)在a 這種變量中 然后在
return {Oop: Oop, version: a} 這類東西吧

2017年2月22日 21:48
編輯回答
逗婦惱

js中沒有私有變量概念,自定義程序中對(duì)象屬性都是外部可見的。
只能模擬一些私有變量特性,但不完整,比如參考 鏈接描述

2018年5月25日 20:58
編輯回答
忠妾

在js中沒有實(shí)例變量,私有變量啥的,js的變量主要分為全局變量和局部變量,不過變量都有作用域,是用變量的作用域來區(qū)分。

2017年9月28日 02:04