学习YUI.Ext 第三天

对于以前很多混淆不清的知识,有必要再梳理一下:就从最基础的变量开始说起。

1.。变量variable

a.全局变量Global Variable 和 局部变量 Private Variable

加var和不加var是有区别的 
      --》如果不用关键字var,声明一个变量,那么这个是全局变量,任何子函数都可以访问,就算是跳出花括号的地方,亦可被访问;
      --》如果使用关键字var,则从所在的“花括号{}”起,全体函数都可以访问该变量,如:

function foo(){
  i=8                    //Global Variable
  alert(i)
 }

function foo2(){
  var i=88 //在此花括号下都可访问变量i
  alert(i);
  child()
  function child(){alert(i)}
 } 
foo();foo2()
alert(i) //这里的i还是8

值得注意是function是编译期的对象,必须执行或实例化才能在内存中分配这一变量。
    全局变量习惯以_开头;p.s全部变量最好慎用,你很知道这个变量在那里何时发生变化!
  -------》参见 js手册:
“尽管并不安全,但声明语句中忽略 var 关键字是合法的 JScript 语法。这时,JScript 解释器给予变量全局范围的可见度。当在过程级中声明一个变量时,它不能用于全局范围;这种情况下,变量声明必须用 var 关键字。”

b.变量的数据类型 the types of variable

Jscript 有三种主要数据类型、两种复合数据类型和两种特殊数据类型。

主要(基本)数据类型是:

字符串 
数值 
布尔 
复合(引用)数据类型是:

对象 
数组 
特殊数据类型是:

Null 
Undefined 
下面简述一下JavaScript中的各种对象类型:
    Native Object: JavaScript语言提供的不依赖于执行宿主的对象,其中一些是内建对象,如:Global、Math;一些是在脚本运行环境中创建来使用的,如:Array、Boolean、Date、Function、Number、Object、RegExp、Error。
    Build-in Object: JavaScript语言提供的不依赖于执行宿主的内建对象,如:Global、Math;内建对象都是Native Object。
    Host Object:JavaScript语言提供的任何依赖于宿主环境的对象,所有非Native Object的对象都是宿主对象,如:IE中的window,WScript中的wscript实例,任何用户创建的类。

****如何检查对象类型?******
   1.typeof()
      typeof 运算符把类型信息当作字符串返回。typeof 返回值有六种可能: "number," "string," "boolean," "object," "function," 和 "undefined."

2.   val instanceof Array
    返回一个 Boolean 值,指出对象是否是特定类的一个实例。 
  例如用到检查 数组或日期类型的时候(事实上,任何类型都允许,见例),必须使用instance of + class name(不用引号),例:

function foo(){}
var f = new foo();
alert(f instanceof foo2) //false

3.constructor 
 constructor 的用法感觉跟instance的用法一样,只不过不返回boolean值

x = new String("Hi");
if (x.constructor == String)
      // 进行处理(条件为真)。

*******var i={}是什么类型?****
答案:object类型 等价于var i = new Object

Object对象是一切对象的载体,有点想父类吧

Object 对象很简单, 
它就只有两个property和两个method 
这两个property是: 
prototype 
constructor 
这两个function是: 
toString() 
valueOf()

那么var obj = new MyObject()怎么文本化呢?其实也很简单的,obj的文本化定义如下:

var obj = 
     {
         Properties1 : 1, Properties2 : '2', Properties3 : [3],
         Method1 : function(){ return this.Properties1 + this.Properties3[0];},
         Method2 : function(){ return this.Preperties2; }
     };

类实例文本化定义的语法为,用一对"{}"表示类,也就说"{}"完全等价于"new Object()"。然后"{}"内按"key:value"组织属性和方法,key可以是任意[A-Za-z0-9_]的字符组合,甚至数字开头都是合法的@_@,value是任何的合法的文本化JavaScript数据,最后每个键值对用","来分隔就行了。
通常用于JSON交换数据。

*******undefined 的两种含义*****
1.undefined关键字 2.undefined属性
声明了变量,但没赋过值,是属于第一种的情况;
完全没有声明,就跑出一个变量参与运算,它的数据类型是第二种情况;
两个相同名字却不同含义,建议下一版本改名。

var declared;                         //声明变量。
if (declared == undefined)            //改为uninitialized没初始化 会更准确,js is loose language indeed!
  document.write("declared has not been given a value.");

if (typeOf(notDeclared) == "undefined")
  document.write("notDeclared has not been defined.");

(0)

相关推荐

  • 学习YUI.Ext 第三天

    对于以前很多混淆不清的知识,有必要再梳理一下:就从最基础的变量开始说起. 1..变量variable a.全局变量Global Variable 和 局部变量 Private Variable 加var和不加var是有区别的        -->如果不用关键字var,声明一个变量,那么这个是全局变量,任何子函数都可以访问,就算是跳出花括号的地方,亦可被访问:       -->如果使用关键字var,则从所在的"花括号{}"起,全体函数都可以访问该变量,如: function

  • 学习YUI.Ext 第六天--关于树TreePanel(Part 1)

    学习YUI.Ext 第五天--关于树TreePanel(Part 1)  效果演示:http://www.ajaxjs.com/yuicn/demos/order_tree.asp     树组件是YUI.Ext 0.40 新增的组件.虽然YUI已经自带有TREE VIEW的组件,但JACK还是决定重新开发.具体原因在http://www.ajaxjs.com/yuicn/article.asp?id=20070245(翻译文章)或http://www.jackslocum.com/blog/2

  • 学习YUI.Ext 第四天--对话框Dialog的使用

    使用方法: 1.加入YUI.Ext 库到你的web程序: <!-- YAHOO UI Utilities Lib, you will need to replace this with the path to your YUI lib file --> <script type="text/javascript" src="deepcms/yui/utilities_2.1.0.js"></script><script ty

  • 学习YUI.Ext第七日-View&JSONView Part Two-一个画室网站的案例

    之前在Part 1简单介绍了Veiw和JSONView.今天这里小弟为大家说说应用的案例,原本Jack的Image Chooser是一个非常好的案例,当中包含Jack大量的奇技淫巧,不过正因为这样,过于深奥,小弟我亦不能全盘吃透,只挑其"勃大茎深"之处,与君共勉之!本文包含四大知识点:1.在LayoutDialog中加入Tabs:2.View的使用方式:3.JSONView的使用方式;4.获取XML/JSON的fields值与分页 演示地址 [View之定义]  A View is g

  • 学习YUI.Ext基础第一天

    导言 翻了翻以前的旧贴子,有值得回味的地方共分享: Post1: ................. 我们现在的大量应用依赖于浏览器(主要是 IE)的脚本处理能力,在有些老机器上跑的时候确实会略显缓慢,但是目前的主流机型处理起来已经没有任何问题了.我们设计了一整套的 Web 开发框架,这套框架将随着应用的锤炼而越来越稳定.JavaScript 用的不好容易造成 IE 的崩溃,我们是靠提高代码的重用度来解决这个问题的,因为重用度越高的代码往往越稳定. 有些眼高手低的人往往凭第一眼印象就把 Java

  • 学习YUI.Ext 第七天--关于View&JSONView

    展现一条一条的二维关系的数据,我们可以使用GIRD组件. 但有些场合,如产品展示,画册,我们可以使用View组件,来展示"矩阵"式的数据. View的数据源来自DataModel对象,即包含XMLDataModel和JSONDataModel.尽管View支持JSON,但如果不是用于DataModel,View的子类JSONView更适用,因为它提供更多的事件和方法.一般来说,View用于XML数据源:JSONView用于JSON数据源. View如何工作? 记得以前如何输出一个记录吗

  • 学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)

    下面将介绍如何异步取一棵树的所有节点,具体做法与官方同步取节点有很大不同,尤其在json的id属性上,下面是我一些摸索,可能不是最佳方案,有待大家一起研究. 异步取节点的思路是这样的: 1.先定义一个初始化节点(也可以不定义,看个人需求) 2.yui-ext根据该节点id请求服务器,获得子节点各属性 3.循环 特点:可以在上一级目录中,在服务器端预先将该节点是否有子节点读好(json中的isLeaf属性),虽然但数据库将多承担一些压力,但用个count(*)不会造成太大负担(除非查询条件异常复杂

  • 学习YUI.Ext第五日--做拖放Darg&Drop

    拖放某个元素Darg&Drop是windows(视窗)问世时的一个重要特征.现在我们要在浏览器里面实现,怎么做呢?先看看基本例子: 复制代码 代码如下: YAHOO.example.DDApp = function() {      var dd;      return {          init2: function() { //   var dropzone =["dz"];  //   for(i in dropzone){  //           new YA

  • 学习YUI.Ext 第二天

    遇到一些JS的语法上的问题,没有理解透,恶补基本功! 匿名函数 An anonymous function 没有名字的就叫作"匿名函数",像这个 function(x,y){return x+y} 没有名字当然不能直接调用,也无法调用:最多能只能把它赋值或闭包处理(闭包是什么下面再讲),如: var sum =function(x,y){return x+y}; alert(sum(1,2)); 这时候,与传统写法是等价的 function sum(x,y){return x+y}.这

  • python学习实操案例(三)

    目录 任务1.循环输出26个字母对应的ASCII码值 任务2.模拟用户登录 任务3.猜数游戏 任务4.计算100-999之间的水仙花数 任务1.循环输出26个字母对应的ASCII码值 x=97#代表的是a的ASCII值 for _ in range(1,27):     print(chr(x),'----->',x)     x+=1 print('--------------------------------------') x=97 while x<123:     print(chr

随机推荐