JavaScript语言精粹--Function,类,this,对象

1.类与对象

在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的。

JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种思路,对象是一个无序的属性集合,集合中的每一项都由名称和值组成(听起来是不是很像我们常听说的HASH表、字典、健/值对?),而其中的值类型可能是内置类型(如number,string),也可能是对象。(在笔记一中有代码示例)

 

2.用 function 关键字模拟 class

在 function 中用 this 引用当前对象,通过对属性的赋值来声明属性。如果用var声明变量,则该变量为局部变量,只允许在类定义中调用。

function myClass() {
            this.id = 5;
            this.name = 'myclass';
            this.getName = function() {
                return this.name;
            }
        }
        var my = new myClass();
        alert(my.id); // 5
        alert(my.getName()); // myclass

>>上面我们用到了this,在这里也说明一下this的用法以及含义!联想的学习。

 

this的用法以及含义

(1)this是js的一个关键字,随着函数使用场合不同,this的值会发生变化。但是总有一个原则,那就是this指的是调用函数的那个对象。

(2)纯粹函数调用。

function test() {
    this.x = 1;
    alert(x);
}
//调用
test();

这里的this就是全局变量。

var x = 1;
function test() {
    alert(this.x);
}
test();//1

var x = 1;
function test() {
    this.x = 0;
}
test();
alert(x);//0
//这里的全局

 

(3)作为方法调用,那么this就是指这个上级对象。

function test() {
    alert(this.x);
}

var o = {};
o.x = 1;
o.m = test;
o.m(); //1

 

(4).作为构造函数调用。所谓构造函数,就是生成一个新的对象。这时,这个this就是指这个对象。

function test() {
    this.x = 1;
}
var o = new test();
alert(o.x);//1

 

(5).最后还有前面说的apply调用

var x = 0;
function test() {
    alert(this.x);
}

var o = {};
o.x = 1;
o.m = test;
o.m.apply(); //0
o.m.apply(o);//1
//当apply没有参数时,表示为全局对象。所以值为0。

 

 

3.在函数体中创建一个对象,声明其属性再返回

在函数体中创建对象可利用第一点的方法,或先 new Object(); 再为各属性赋值。

function myClass() {
            var obj =
            {
                'id':2,
                'name':'myclass'
            };
            return obj;
        }
        function _myClass() {
            var obj = new Object();
            obj.id = 1;
            obj.name = '_myclass';
            return obj;
        }
        var my = new myClass();
        var _my = new _myClass();
        alert(my.id);
        alert(my.name);
        alert(_my.id);
        alert(_my.name);

 转载:http://www.cnblogs.com/zqzjs/p/4442662.html

时间: 2024-10-27 03:56:57

JavaScript语言精粹--Function,类,this,对象的相关文章

JavaScript语言精粹经典实例(整理篇)_javascript技巧

数据类型 JavaScript 是 弱类型 语言,但并不是没有类型,JavaScript可以识别下面 7 种不同类型的值: 基本数据类型 1.Boolean 2.Number 3.String 4.null 5.undefined 6.Symbol Object 1.Array 2.RegExp 3.Date 4.Math 5.... 可以使用 typeof 判断数据类型,操作符返回一个字符串,但并非返回的所有结果都符合预期 typeof false // "boolean" type

《JavaScript语言精粹》读书笔记

<JavaScript语言精粹>这本书句句是精华.如果你想只读一本书了解JavaScript,这本是你的不二选择. 这么薄的一本书讲JavaScript的特点介绍的非常清楚,是我对JavaScript的认识更加的深入.以前总觉得函数式编程很难理解,但是看了这本书以后我觉得对其有了一个新的认识.严格意义上说JavaScript并不仅仅是一门函数式编程语言,书中有一句话对它的特性做了一个精彩的描述:JavaScript的许多特性都借鉴自其他语言.语法借鉴自java,函数借鉴自Scheme,原型继承

&lt;JavaScript语言精粹&gt;-读书笔记(一)

用object.hasOwnProperty(variable)来确定这个属性名是否为该对象成员,还是来自于原型链. for(my in obj){ if(obj.hasOwnProperty(my)){ ... } } 思考:--用来遍历判断是否有该属性成员,当为一个string var="abcdef"一样的一个字符串时,通过JS代码判断其中是否含有我们需要的某一个字符,比如a,如果有就将其remove 一个属性存取表达式用于指定一个对象或数组的属性或元素. 对象字面量:一个对象字

JavaScript 语言精粹学习笔记第1/2页_javascript技巧

非常好的想法包括函数,弱类型,动态对象和一个富有表现力的对象字面量的表示法, 坏的想法包括基于全局变量的编程模型. JavaScript的函数是基于词法作用域的顶级对象.Javascript是第一个成为主流的Lambda语言.相对于Java而言,JavaScript于Lisp和Scheme有更多的共同点.它是披着C外衣的Lisp.这使得JavaScript成为一个非常强大的语言. 现在大部分变成语言都流行要求强类型.其原理在于强类型允许编译器在编译时检查错误.我们越早检查和修复错误,付出的代价越

JavaScript语言精粹--执行环境及作用域,this

1.执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为. 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中. 虽然我们无法访问,但是解析器在处理数据时会在后台调用它.   2.全局执行环境是最外围的一个执行环境,在浏览器中就是window对象. 全局变量销毁的时候只有当关闭网页或浏览器才会. 局部执行环境就是函数执行环境.   3.当代码在一个环境中执行的时候,会创建变量对象的一个作用域链. 作用域链的用途是保证对执行环境所有变量和函数的有权访问

&lt;JavaScript语言精粹&gt;--&lt;读书笔记三&gt;之replace()与正则

今天有人问我repalce(),他那个题目很有意思.我也不会做,于是我就去查,结果发现就是最基础的知识的延伸. 所以啊最基础的知识才是很重要的,千万不能忽略,抓起JS就写代码完全不知到所以然,只知道写,但是为什么这么写呢?不知道. 1.JS replace()方法 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. stringObject.replace(regexp/substr,replacement) 参数 描述 regexp/substr

C++语言基础 例程 类和对象的简单应用举例

贺老师的教学链接  本课讲解 实例1:求出三角形的周长和面积 #include<iostream> #include<Cmath> #include<cstdlib> using namespace std; class Triangle { public: void setABC(double x, double y, double z);//置三边的值,注意要能成三角形 double perimeter();//计算三角形的周长 double area();//计算

javascript语言基础

javascript的数据类型: javascript数据类型分为两种:原始类型与对象类型 原始类型: 数字.字符串.布尔值.null.undefined 其中null与undefined代表了各自特殊类型的唯一成员 对象类型: 所谓对象类型便是属性的集合,每个属性都是由键值对组成 普通的对象时无序键值对,有序的键值对便是我们的数组了 还有一个特殊的对象便是函数 函数是具有与他相关联的可执行代码的对象,通过调用函数运行可执行代码并返回结果 若是使用new操作符来新建一个对象我们便称之为构造函数

Javascript中如何定义类(class)

将近20年前,Javascript诞生的时候,只是一种简单的网页脚本语言.如果你忘了填写用户名,它就跳出一个警告. 如今,它变得几乎无所不能,从前端到后端,有着各种匪夷所思的用途.程序员用它完成越来越庞大的项目. Javascript代码的复杂度也直线上升.单个网页包含10000行Javascript代码,早就司空见惯.2010年,一个工程师透露,Gmail的代码长度是443000行! 编写和维护如此复杂的代码,必须使用模块化策略.目前,业界的主流做法是采用"面向对象编程".因此,Ja