java基础:javascript面向对象的支持(1)

HTML5入门第一课 先说说为啥想写一些关于html5的东西吧 大一某菜鸡小同学期末高数崩了(真的复习了好久好久好难受呀!!!)然后想做一些自己喜欢的事情放松一下耶耶耶!还有就是学完html5之后本来也就有写博客的想法,只是因为一些东西一拖再拖,另外以前学的差不多也忘光了,借此机会好好复习一下,开始吧!也希望可以对刚入门的小白有一个指导的作用吧(比如几个月以前的我) 什么是HTML5 超文本标记语言(Hypertext Markup Language) 解释: 超文本:简单来说就是超出文本的意思,包括图片、链接、音频等等 注意 阅读详情

1. javascript中的类型
--------
虽然javascript是一个基于对象的语言,但对象(object)在javascript中不是第一型的。js是以函数(function)为第一型的语言。这样说,不但是因为js中的函数具有高级语言中的函数的各种特性,而且也因为在js中,object也是由函数来实现的。??关于这一点,可以在后文中“构造与析构”部分看到更进一步的说明。

js中是弱类型的,他的内置类型简单而且清晰:
---------------------------------------------------------
undefined : 未定义
number    : 数字
boolean   : 布尔值
string    : 字符串
function  : 函数
object    : 对象


 1). undefined类型
========================
在ie5及以下版本中,除了直接赋值和typeof()之外,其它任何对undefined的操作都将导致异常。如果需要知道一个变量是否是undefined,只能采用typeof()的方法:


但是在ie5.5及以上版本中,undefined是一个已实现的系统保留字。因此可以用undefined来比较和运算。检测一个值是否是undefined的更简单方法可以是:


因此为了使得核心代码能(部分地)兼容ie5及早期版本,romo核心单元中有一行代码用来
“声明”一个undefined值:
//---------------------------------------------------------
// code from qomolangma, in jsenhance.js
//---------------------------------------------------------
var undefined = void null;

这一行代码还有一点是需要说明的,就是void语句的应用。void表明“执行其后的语句,且忽略返回值”。因此在void之后可以出现能被执行的任何“单个”语句。而执行的结果就是undefined。当然,如果你愿意,你也可以用下面的代码之一“定义undefined”。
//---------------------------------------------------------
// 1. 较复杂的方法,利用一个匿名的空函数执行的返回
//---------------------------------------------------------
var undefined = function(){}();

//---------------------------------------------------------
// 2. 代码更简洁,但不易懂的方法
//---------------------------------------------------------
var undefined = void 0;

void也能像函数一样使用,因此void(0)也是合法的。有些时候,一些复杂的语句可能不能
使用void的关键字形式,而必须要使用void的函数形式。例如:
//---------------------------------------------------------
// 必须使用void()形式的复杂表达式
//---------------------------------------------------------
void(i=1);       // 或如下语句:
void(i=1, i++);


 2). number类型
========================
javascript中总是处理浮点数,因此它没有象delphi中的maxint这样的常量,反而是有这
样两个常值定义:
  number.max_value  : 返回 jscript 能表达的最大的数。约等于 1.79e+308。
  number.min_value  : 返回 jscript 最接近0的数。约等于 2.22e-308。

因为没有整型的缘故,因此在一些关于css和dom属性的运算中,如果你期望取值为整数2,
你可能会得到字符串“2.0”??或者类似于此的一些情况。这种情况下,你可能需要用
到全局对象(gobal)的parseint()方法。

全局对象(gobal)中还有两个属性与number类型的运算有关:
  nan      : 算术表达式的运算结果不是数字,则返回nan值。
  infinity : 比max_value更大的数。

如果一个值是nan,那么他可以通过全局对象(gobal)的isnan()方法来检测。然而两个nan
值之间不是互等的。如下例:
//---------------------------------------------------------
// nan的运算与检测
//---------------------------------------------------------
var
  v1 = 10 * 'a';
  v2 = 10 * 'a';
document.writeln(isnan(v1));
document.writeln(isnan(v2));
document.writeln(v1 == v2);

全局对象(gobal)的infinity表示比最大的数 (number.max_value) 更大的值。在js中,
它在数学运算时的价值与正无穷是一样的。??在一些实用技巧中,它也可以用来做一
个数组序列的边界检测。

infinity在number对象中被定义为positive_infinity。此外,负无穷也在number中被定
义:
  number.positive_infinity  : 比最大正数(number.max_value)更大的值。正无穷。
  number.negative_infinity  : 比最小负数(-number.max_value)更小的值。负无穷。

与nan不同的是,两个infinity(或-infinity)之间是互等的。如下例:
//---------------------------------------------------------
// infinity的运算与检测
//---------------------------------------------------------
var
  v1 = number.max_value * 2;
  v2 = number.max_value * 3;
document.writeln(v1);
document.writeln(v2);
document.writeln(v1 == v2);

在global中其它与number类型相关的方法有:
 isfinite()   : 如果值是nan/正无穷/负无穷,返回false,否则返回true。
 parsefloat() : 从字符串(的前缀部分)取一个浮点数。不成功则返回nan。


 3). boolean类型
========================
 (略)

 4). string类型
========================
javascript中的string类型原本没有什么特殊的,但是javascript为了适应“浏览器实现的超文本环境”,因此它具有一些奇怪的方法。例如:
  link() : 把一个有href属性的超链接标签放在string对象中的文本两端。
  big()  : 把一对标签放在string对象中的文本两端。
以下方法与此类同:
  anchor()
  blink()
  bold()
  fixed()
  fontcolor()
  fontsize()
  italics()
  small()
  strike()
  sub()
  sup()

除此之外,string的主要复杂性来自于在javascript中无所不在的tostring()方法。这也是javascript为浏览器环境而提供的一个很重要的方法。例如我们声明一个对象,但是要用document.writeln()来输出它,在ie中会显示什么呢?

下例说明这个问题:
//---------------------------------------------------------
// tostring()的应用
//---------------------------------------------------------
var
  s = new object();

s.v1 = 'hi,';
s.v2 = 'test!';
document.writeln(s);
document.writeln(s.tostring());

s.tostring = function() {
  return s.v1 + s.v2;
}
document.writeln(s);

在这个例子中,我们看到,当一个对象没有重新声明(覆盖)自己tostring()方法的时候,那么它作为字符串型态使用时(例如被writeln),就会调用java script环境缺省的tostring()。反过来,你也可以重新定义javascript理解这个对象的方法。

很多javascript框架,在实现“模板”机制的时候,就利用了这个特性。例如他们用这样定义一个fontelement对象:
//---------------------------------------------------------
// 利用tostring()实现模板机制的简单原理
//---------------------------------------------------------
function fontelement(innerhtml) {
  this.face = '宋体';
  this.color = 'red';
  // more...

  var ctx = innerhtml;
  this.tostring = function() {
    return ' '
      + ctx
      + '';
  }
}

var obj = new fontelement('这是一个测试。');

// 留意下面这行代码的写法
document.writeln(obj);


 5). function类型
========================
javascript函数具有很多特性,除了面向对象的部分之外(这在后面讲述),它自已的一些独特特性应用也很广泛。

首先javascript中的每个函数,在调用过程中可以执有一个arguments对象。这个对象是由脚本解释环境创建的,你没有别的方法来自己创建一个arguments对象。

arguments可以看成一个数组:它有length属性,并可以通过arguments[n]的方式来访问每一个参数。然而它最重要的,却是可以通过 callee 属性来得到正在执行的函数对象的引用。

接下的问题变得很有趣:function对象有一个 caller 属性,指向正在调用当前函数的父函数对象的引用。

??我们已经看到,我们可以在javascript里面,通过callee/caller来遍历执行期的调用栈。由于arguments事实上也是function的一个属性,因此我们事实上也能遍历执行期调用栈上的每一个函数的参数。下面的代码是一个简单的示例:

//---------------------------------------------------------
// 调用栈的遍历
//---------------------------------------------------------
function foo1(v1, v2) {
  foo2(v1 * 100);
}

function foo2(v1) {
  foo3(v1 * 200);
}

function foo3(v1) {
  var foo = arguments.callee;
  while (foo && (foo != window)) {
    document.writeln('调用参数:
', '---------------
');

    var args = foo.arguments, argn = args.length;
    for (var i=0; i
      document.writeln('args[', i, ']: ', args[i], '
');
    }
    document.writeln('
');

    // 上一级
    foo = foo.caller;
  }
}

// 运行测试
foo1(1, 2);
         (责任编辑:包春林)


从仿真到实践:两级直接耦合放大电路的静态工作点协同调试指南 本文详细解析了两级直接耦合放大电路的静态工作点协同调试方法,从仿真到实践提供系统指南。重点介绍了Rc2电阻调整技巧、集电极电位测量方法及常见问题排查,帮助工程师解决各级静态工作点相互影响的难题,提升模拟电路设计效率。 阅读详情

相关推荐

RT-Thread代码启动过程——以及 $Sub$ $main 与 $Super$ $main

我们找到系统复位的地方,可以往下单步跟踪。 ①从系统初始化开始执行,将函数地址赋给R0寄存器,跳转到R0地址执行并返回此处(BLX是带链接的跳转,即带返回的跳转)。 ②将main函数地址给R0,将函数地址赋给R0,跳转到R0地址执行,不返回(BX是跳转,不返回)。 ③跳转到了$Sub$$main。 【注:在 __CC_ARM 编译器环境下,使用了$Sub$$ 与$Super$ $ 的...

yang1111111112的博客 1万+

初识JavaScript

初识JavaScript会发生什么事呢

微风洋洋的博客 2198

ubuntu20.04 终端安装claude

【代码】ubuntu20.04 终端安装claude。

hongliyu_lvliyu的博客 2601

JavaScript 面向对象详解

JavaScript面向对象

LBJ辉的前端天地 5260

从理论到实践:基于Zemax的高分辨率生物显微镜光学系统仿真与优化指南

本文详细介绍了基于Zemax的高分辨率生物显微镜光学系统仿真与优化全流程。从阿贝分辨率公式、柯勒照明等理论基础出发,逐步讲解Zemax建模、像差优化、制造可行性分析等核心步骤,并提供常见问题解决方案。通过实际案例展示如何将理论设计转化为可制造的优化方案,帮助工程师掌握从仿真到实际应用的关键技术。

weixin_29229989的博客 486

对数周期天线hfss建模_Ansoft HFSS 在设计对数周期天线时的仿真方法-HFSS教程

AnsoftHFSS在设计对数周期天线时的仿真方法文章来源: ANSYS 2011中国用户大会优秀论文 录入: mweda.com 点击数:【摘要】 本文通过 ANSOFT HFSS 设计了一个对数周期天线,在仿真分析时,发现随着求解频率的不同,天线的求解结果差别较大,求解误差较大。通过在 HFSS 中尝试不同的求解设置方法, 最终通过将天线模型剖分网格最大长度限定在 1/50λ的...

weixin_42186728的博客 2103

JavaScript面向对象的支持(1)(转)

JSPCN主页 | JSP空间 | JSP教程 | JSP下载 | JSP论坛 | 留言 | 关于JSPCN | 友情链接 | 联系我们 地图 ...

cqwf95925的博客 166

qt5.14.2+vs2019配置msvc2017编译器

qt5.14.2+vs2019配置msvc2017编译器 在使用qt编译程序时此前一直使用的是自带的MinGW 32-bit和64-bit,现在想使用msvc编译器。本次使用的是qt5.14.2,vs2019,需要配置msvc2017的32-bit和64-bit编译器。 1、首先安装好qt5.14.2和vs2019,其次在visual studio installer选择修改,然后选择msvc2017对应的组件,本次安装的是这两个 2、打开qt creator的工具–选项–kits–编译器,选择Manu

bangtanhui的博客 1万+

JavaScript面向对象的支持(3)

================================================================================Qomolangma OpenProject v0.9类别    :Rich Web Client关键词  :JS OOP,JS Framwork, Rich Web Client,RIA,Web Component,         

aimingoo的专栏 7337

如何正确的计算两个角度的角度差?

这一步是必要的,因为它确保了无论a相对于b是在逆时针方向还是顺时针方向,d2总是正确地反映出绕圆相反方向的角度差。这样,当函数进行最后的比较时,它能够准确地比较两个方向的旋转路径并选择最短的一个。

小秋 AI SLAM 入门实战教程 4139

2023华为od机试C卷【宽度最小的子矩阵】Python 实现

给定一个矩阵,包含N*M个整数,和一个包含K个整数的数组现在要求在这个矩阵中找一个宽度最小的子矩阵,要求子矩阵包含数组中所有的整数。

MISAYAONE的博客 2188

JAVA基础:JavaScript面向对象的支持(1)

 1. JavaScript中的类型--------虽然JavaScript是一个基于对象的语言,但对象(Object)在JavaScript中不是第一型的。JS是以函数(Function)为第一型的语言。这样说,不但是因为JS中的函数具有高级语言中的函数的各种特性,而且也因为在JS中,Object也是由函数来实现的。??关于这一点,可以在后文中“构造与析构”部分看到更进一步的

kinglino520的专栏 468

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Yi-Coder-1.5B多语言代码生成实测:Python、JavaScript、Java全搞定

本文介绍了如何在星图GPU平台上自动化部署【ollama】Yi-Coder-1.5B镜像,实现多语言代码生成功能。该模型支持Python、JavaScript、Java等52种编程语言,可快速生成符合最佳实践的代码,显著提升开发效率。通过简单的配置,开发者即可在星图GPU平台上搭建智能编程助手,应用于日常编码、数据处理等场景。

weixin_42605397的博客 294

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

{js}JavaScript中支持面向对象的基础

今天在研究dwr2.0的时候,突然看到了demo中javascript用{}创建对象的方法,很好奇,感觉非常像java中的map对象,而事实这是javascript中的Object对象而以,其中的key只是它的属性或者方法,value是它属性对应的值或者方法对应的实现而已,对此特别在网上找到了以下的文章,让我更多的认识了javascript的使用,且更加感兴趣了================

天涯 书塾 1062

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【JS高级进阶】JavaScript初识面向对象

本篇主要讲解了什么是面向对象,如何创建使用类,super关键字的使用以及注意事项(学过Java的小伙伴们就会很容易理解)区分面向对象和面向过程

zhaochen1127的博客 2700

【Java】Java与JavaScript:探究它们的区别与联系

总体而言,Java和JavaScript虽然有相似之处,但在语法、应用场景和执行环境上存在明显的差异。Java主要用于后端和移动应用开发,而JavaScript则是前端开发的核心。然而,通过各种工具和技术,它们可以在一些场景中相互整合,发挥各自的优势,构建更为完善的应用系统。深入理解它们的区别与联系,将有助于开发者更好地选择和应用这两种语言。

double222222的博客 1410

Java面向对象和JavaScript面向对象的区别

Java面向对象和JavaScript面向对象的区别 JS面向对象是采用原型链的方式设计的,JAVA是采用正统的面向对象的思想设计的. 1.面向对象的能力 JS对于对象的理解为“属性的无序集合,每个属性存放一个原始值、对象或函数”JS只有一种访问作用域public. JS不支持静态作用 Java的对象是具有类定义,类有方法,属性,还有静态,和访问作用域(public ,private, protected)。java支持静态作用域 早绑定与晚绑定 所谓绑定,是把对象的接口和对象实例结合在一起的方法。 早绑定

m0_48336447的博客 1431

牵着JS(Java Script)的手 一起走

Web前端-JSJS的历史和特点简介JS诞生的背景JS的历史JS的特点JS的语法基础第一个JS例子JavaScript 语法JavaScript 输出基本语句JavaScript 数据类型的转换javaScript方法javaScript函数js中的函数定义匿名函数定义JS对象数组对象字符串对象JS面向对象编程javaScript选择器javaScript弹框确认框对话框 JS的历史和特点简介 JS诞生的背景 1.随着互联网的发展,页面传递给后台有太多需要验证的东西,尽管后端的代码是能够实现对传递过来的数据

一个小小的码农 2万+

JS学习笔记(JavaScript基础学习必备)

讲解JavaScript 基础语法、关键特性、JSON、WebAPI 等知识点。涉及网页窗口交互的方法以及通过 DOM 进行网页元素的相关操作。 文章目录一、JavaScript 基础1.什么是 JavaScript2.JavaScript 范例3.变量4.数字与运算符5.数组概述6.操作数组7.Null 和 Undefined8.字符串9.转换成字符串10.转换成数值类型11.转换成布尔类型二 、JavaScript 关键特性1.条件2.循环3.函数(参数,函数返回值)4.创建函数5.挑战:制作直角三角形

weixin_44009656的博客 5341

Java与JavaScript的区别与联系:有人的地方就有江湖,有浏览器的地方就有JavaScript

有人的地方就有江湖,有浏览器的地方就有JavaScript

球球不吃虾WHR2349博客 4228

Java基础学习之JavaScript

1.JS概述简介JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。Node.js。在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。...

1800

一小时搞定JavaScript(1)——JS基础

在JS中专门有一个未定义类型,就是针对那些声明了变量但是没有进行复制的数据.let tmp;JSON对象本质是个字符串,主要作用就是传递数据,客户端拿到服务器的JSON格式数据字符串,先要转换成JS对象数据.属性必须要双引号(包括属性的属性).属性对应的值可以是nuLl、true/faLse、数字、字符串(必须双引号)、对象、数组.'"name"' +'}'无法通过JSON对象访问属性JS对象是一个真实的对象,有属性和方法.

qq_65034569的博客 1229

JavaScript学习笔记:1.JavaScript简介

打开网页时,弹出的欢迎弹窗、滑动时的平滑动画、点击就刷新的投票按钮——这些让静态页面变得生动有趣的互动,背后都藏着同一个“幕后功臣”:JavaScript(简称JS)。这门诞生于网页的脚本语言,如今早已跳出浏览器的“舒适区”,在服务器、手机App、智能设备等多个领域发光发热。今天就来聊聊,这门既灵活又强大的语言,到底是什么来头?

Amon的专栏 2884

Js是基于对象还是面向对象的

Js是基于对象还是面向对象的一、什么叫做面向对象二、什么叫做基于对象三: Js的特性四:js通过原型链等来模拟出和面向对象很类似的功能。五:总结 一、什么叫做面向对象 面向对象的三大特点(封装,继承,多态)缺一不可。 所谓封装:也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单...

qq_42615057的博客 1778
上一篇: java基础:javascript面向对象的支持(2)
下一篇: 深入研究vs 2008中的javascript编辑调试器
Labber
博客等级 码龄19年 26粉丝 1976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值