javascript属性の詳細解

11006 ワード

jsには、パブリック属性とプライベート属性の区別がなく、グローバル変数(グローバル属性)とローカル変数、およびオブジェクト属性のみが含まれています.しかし、プログラマは一定のテクニックで対象言語に対応する機能を実現することができます.これらの属性(変数)を紹介します.
グローバル変数もグローバル属性と呼びます.
/* 1.  var     。               ,        */
var a = ''; 

/*2.           ,            。  ,      
          。                    */
a = '';

/*3.  window  ,             。            ,
       。*/
window.a = 'wname' ;

/*4. this。      this   window,                
 。*/
function x(){ this.a ='aname';}
x();

/*  :  4          。      3 。             ,
; , 3 , 。
, delete ,
*/ var a = 'ss'; delete a // false window.a = '33' delete a // true;
 ローカル変数
/* js ,          。              */
function x(){
    // a      ,          。
    var a = 'ws'; 
    //
    return a;
}

//

function foo(){
    var o = {name: 'we'};

    return function(){
        return o;
    };

}

var f= foo();

var obj = f();

obj.name = 'ws';

f(); // {name: 'ws'}.           ,              
オブジェクトの属性
//1.        
var o = {}
//               
o.name ='  ';
o['a'] = '     '
//          
o.method = function(){};

//2.         
var o = {
    'name': '  ',
    'a': '     ',
    'method': function(){

    }
}
////3.    new    
function(name){
    this.name = name
}
静的な属性
/* java ,  【  .  】     ,      ,     。     
       ,          。 js ,            。   
           (     )*/
function Person(){

}
//    
Person.a = 'ws';
//               
var p = new Person();

p.a; // undefined
プライベート属性
/* js ,       。  ,      (    )   */
function Person (){
    var name = '    ';
    this.getName = function(){
        return name;
    }
    this.setName = function(newName){
        name = newName;
    }
}

var p = new Person();

p.getName();

p.setName('  ');

p.getName(); //  

/*    ,     getName、setName       name,   
name        。  ,  name       ,        
     */
//              
function Person(){
    var info = {name: '    '}
    this.getInfo = function(){
        return info;
    }
}

var p = new Person();

var pInfo = p.getInfo();// { name="    "}

pInfo.age = 32; //       p     

p.getInfo(); //  { name="    ", age=32}。      。

/*      ,         ,  ,          。     
          */
function Person(){
    var info = {name: '    '}
    this.getInfo = function(){
        //   info     ,   for in    
        return {name: info.name};
    }
}
 最新のjs仕様では、get、set、defineProperty、definePropertiesによってオブジェクトの属性を定義することもできます.これらはとても強力な方法です.また今度紹介します.