一、函数对象的属性和方法

函数是一种数据类型,也是对象,这一点很明确。因此,函数对象也可以添加属性方法,但是这里的属性和方法是静态的,之所以这样说,就是为了区别构造函数。

示例如下:

①创建一个空的函数对象circle

function circle() //定义一个空函数circle(),也可以称为建立函数对象circle;
{
}

②为此函数对象添加属性和方法:

function circle() //定义一个空函数circle(),也可以称为建立函数对象circle;
{
}
circle.radius=10;        //添加半径属性
circle.area=function()    //添加求面积方法area;
{alert(circle.radius*circle.radius*3.14);
}
alert(circle.radius);    //静态使用函数对象circle的属性;
circle.area();        //静态调用函数对象circle的方法;

例子说明:即使函数没有被调用,也可以访问到函数对象的属性和方法(静态)

2017-04-18 16:35:32 补充:

在函数体内也可以添加属性,但是这种属性必须在函数调用之后才能使用。

二、函数作为构造函数(this特权方法)

函数作为构造函数属性必须用this。 上面例子说明:函数对象的属性和方法是它本身所具有的,似乎和通过它创建的对象“一点关系都没有”。

举例说明:

var a=new circle();    //将circle()作为构造函数创建一个对象;
alert(a.radius);    //企图访问构造函数对象的属性?结果undefined..

构造函数的正确用法:

function circle(r) //定义带参数的构造函数
{this.radius=r;            //半径属性this.area=function()    //求面积方法area;
    {return (this.radius*this.radius*3.14);}
}var a=new circle(20);    //创建对象;
alert(a.area());        //调用方法;

很多书本上的解释是这样的:先创建一个空对象,然后再将此对象代入构造函数,做为this进行匹配,听起来也很合理。

2017-04-18 16:52:37 补充:

假如没有实例化对象和构造函数绑定,那么构造函数里面的this指的是谁呢?其实,这里的this指的是window对象!

特权方法:有权访问私有变量和私有方法的方法。

三、公用方法

问题引出:通过构造函数创建对象会出现一个问题:产生的对象会各自占拷贝一份方法,这样会有点浪费。而在C++中,代码是共享的一份。

所有的Javascript函数均具有一个名为prototype的属性,此属性引用了(构造函数的)原型对象。初始时原型对象为空,但是原型对象添加属性方法后,能够被实例化的对象继承

补充:prototype添加的方法称为:公共方法

function f(name)    //构造函数
{this.name=name;
}
f.prototype.showName=function()    //通过原型prototype添加一个方法,此方法为共享。
{document.write(this.name);
}var apple=new f("apple"); //生成apple对象;
apple.showName();var orange=new f("orange");    //生成orange对象;
orange.showName();alert(apple.showName()==orange.showName());//完全相同,返回true

转载于:https://www.cnblogs.com/tinaluo/p/6669413.html

深入浅出javascript(二)函数和this对象相关推荐

  1. JavaScript教程——函数(arguments 对象)

    arguments 对象 定义 由于 JavaScript 允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数.这就是arguments对象的由来. arguments对象包含了 ...

  2. JavaScript基础函数的配置对象Configuration Objects(020)

    配置对象通常用在API库的实现中,当程序中需要编写要多次的模块,也可以采用这种模式.这种模式的好处是接口明确,扩展方便.比如,一个 addPerson在设计的最初需要两个参数作为初始化时人的姓名: f ...

  3. 深入浅出 JavaScript 中的 this

    为什么80%的码农都做不了架构师?>>>    在 Java 等面向对象的语言中,this 关键字的含义是明确且具体的,即指代当前对象.一般在编译期确定下来,或称为编译期绑定.而在 ...

  4. JavaScript函数与Window对象

     JavaScript函数与Window对象 一.函数的使用 函数的含义:类似于Java中的方法,是完成特定任务的代码语句块   ◆常用系统函数: parseInt ("字符串") ...

  5. JavaScript学习总结(二)数组和对象部分

    pt学习总结(二)数组和对象部分 2016-09-16    分类:WEB开发.编程开发.首页精华暂无人评论     来源:trigkit4 分享到:更多1 对象部分 Object类型 Object  ...

  6. 深入浅出 Javascript API(二)--地图显示与基本操作 转

    深入浅出 Javascript API(二)--地图显示与基本操作 地图显示与基本操作(放大.缩小.移动.坐标显示)是JavascriptAPI的基本功能,也是一个WebGIS应用的基本内容,Java ...

  7. Javascript中的函数是第一类对象(first-class object)

    本身这句话很好解释,函数有两个主要特点,援引自 陈新 译的<JavaScript模式>: 1.函数是第一类对象: 函数可以在运行时动态创建,还可以在程序执行过程中创建. 函数可以分配变量, ...

  8. [置顶] 深入浅出Javascript(三)创建自定义对象以及属性、方法

    怎么样创建一个对象? 利用Object创建自定义对象 JavaScript能够自定义对象来扩展程序的功能,不仅如此,它还能扩展JavaScript提供的内置对象,新增内置对象的属性或方法 例如下面代码 ...

  9. JavaScript id_好程序员web前端分享Javascript中函数作为对象

    好程序员web前端分享Javascript中函数作为对象,Javascript赋予了函数非常多的特性,其中最重要的特性之一就是将函数作为第一型的对象.那就意味着在javascript中函数可以有属性, ...

  10. 带你学习javascript的函数进阶(二)

    上一篇文章分享了<带你学习Javascript中的函数进阶(一)>,今天继续学习javascript的函数进阶的内容. 文章目录 1 严格模式 1.1 什么是严格模式 1.2 开启严格模式 ...

最新文章

  1. UISearchBar和 UISearchDisplayController的使用
  2. 超全!CS 顶会历届最佳论文大列表,机器学习、深度学习一应俱全!
  3. 电商618背后的那些技术事儿
  4. 初学Golang:channel的使用
  5. Win7实用技巧之五库功能妙用
  6. ubuntu13.10上交叉编译win32运行的vlc2.0.3总结
  7. ListBox的一个郁闷小问题!
  8. 利用 VBA 和 HTML自制兼容 WPS及 EXCEL(32位/64位)的颜色选择器
  9. 部署java项目_企业最看重什么样的Java人才?
  10. Android下拉状态栏图标错了,小米手机怎么改状态栏的图标,并且把下拉的状态栏弄透明...
  11. mysql 主从关系切换
  12. 九九乘法表新打表(倒三角式)
  13. ssl登录服务器未响应是什么意思,工行的网上银行在确认转账时网页总是未响应...
  14. 普加计划甘特图功能介绍
  15. INFO:ProjectMgmt - The selected process was not run because a prior process failed.的解决方案
  16. win10系统开始菜单没反应的解决方法丨解决win10点击开始按钮无反应丨点击开始按钮没有反应怎么办
  17. java实现简易五子棋
  18. icpc西部区域赛_江西软件大学夺得第八届高校联赛西部大区总冠军
  19. 亿信华辰:怎样去断定一份数据的质量高低?数据质量如何评估?
  20. Linux系统:基础指令

热门文章

  1. boost::contract模块实现private protected的测试程序
  2. DCMTK:DSRNumericMeasurementValue类的测试程序
  3. VTK:图片之StaticImage
  4. OpenCV calcHist()创建直方图的实例(附完整代码)
  5. OpenGL 纹理Textures
  6. C++用并查集Disjoint union实现connected component连通分量(附完整源码)
  7. C++虚析构和纯虚析构
  8. C语言多维数组做函数参数技术推演
  9. 5.prometheus告警插件-alertmanager、自定义webhook案例编写
  10. 18_clickhouse副本同步与高可用功能验证,分布式表与集群配置,数据副本与复制表,ZooKeeper整合,创建复制表,副本同步机制,数据原子写入与去重,负载平衡策略,案例(学习笔记)