JavaScript的几个问题,想不通?

1.vartxt="HelloWorld!"document.write(txt.length)“txt.length”这个的意思是输出"HelloWorld!"的长度。... 1. var txt="Hello World!" document.write(txt.length) “txt.length”这个的意思是输出"Hello World!"的长度。但是txt.length不是txt的一个属性吗?应该被赋值,又不是方法txt.length( ),可以直接返回一个值。为什么txt.length可以直接得到一个值。求解释?

2. var str="Hello world!" document.write(str.toUpperCase()) str是字符串对象,既然str是个对象,那应该像java一样,这样定义: var str=new var( ),再做接下来的动作啊,为什么可以直接赋值。

3. document.write(Date()) 这段意思是显示系统时间。那我想问为什么 Date( ) 这个方法不用 对象.Date( ) 就可以直接得到时间,是不是因为 Date( ) 是类方法,不需要对象。
展开
 我来答
hu437
2012-04-23 · TA获得超过3472个赞
知道大有可为答主
回答量:2690
采纳率:0%
帮助的人:2322万
展开全部
JavaScript是JavaScript,我们不要拿Java的通常思维来定义,这样来理解有时候会有很多不清晰

1、这个问题,你可以这样理解,你可以将txt.length,这个当作是在你初始化这个字符串的时候,编译器已经将你的长度计算出来,并写到了txt.length这个属性里面。这个应该比较好理解

2、javaScript是弱类型的语言,在JS里面String是原始类型,就像我们在java里面,int a = 10,一样,我们并不需要先int a = new int(),当然这个是非法的,int的类为integer。

3、Date是系统方法,从java5之后支持一个在import里面导入静态方法,这样我们也可以在代码里面使用类似的东西。这个其实就相当于,我们在写java时,会默认的导入java.lang.*的包一样,这里是JavaScript的运行环境,也就是浏览器,已经将这个默认的类库导入进来了,这个是属于javaScript标准的
更多追问追答
追问
第3个问题我懂了。但是前两个问题的共同点我还是有点不懂。我查了C语言和Java的语法,var txt中的txt是变量,var str中的str也是变量。既然他们都是变量,不是对象。为什么可以像对象一样,可以有属性、有方法。就是 txt.length 和 str.toUpperCase()
追答
javascript是弱类型语言,他的类型是在使用时确定的,var txt = "hello",这个时候txt就是字符串,在javascript的定义中,字符串有这两个属性和方法

发音 这两种语言不是一样的一个是强类型的,一个是弱类型的,很多地方,不能完全直接的套用的
ask_bai_du
2012-04-27 · TA获得超过399个赞
知道小有建树答主
回答量:103
采纳率:100%
帮助的人:119万
展开全部
你连JavaScript的基础语法都不会,还是别先问这些问题了,先去学一下JavaScript的基本语法,不要把所有的计算机语言都想的一样。
"我查了C语言和Java的语法,var txt中的txt是变量,var str中的str也是变量。既然他们都是变量,不是对象。为什么可以像对象一样,可以有属性、有方法。"

看的出你都不知道啥是对象,啥是变量,你还是先学好一门语言吧,对于刚开始学习计算机的人,一次学习几门计算机语言并不好,一步步的来比较好,等你对计算机语言有了更深的理解,对程序设计、编程的概念有了更深的理解,你再学习多种语言会很迅速
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
846492130
2012-04-23 · TA获得超过287个赞
知道小有建树答主
回答量:500
采纳率:0%
帮助的人:338万
展开全部
看了一下 你主要是不太了解为什么 javascript和java语言声明对象的时候不一样对吧
其实javascript语言 属于大小写敏感 面向对象的弱类型语言
也就是声明的时候 不需要指定数据类型 给它什么样的值 它就是什么样的数据类型
并不像java那样 数据类型和引用必须对应
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收集板
2012-04-23 · TA获得超过402个赞
知道小有建树答主
回答量:382
采纳率:0%
帮助的人:224万
展开全部
1. txt是什么类型的?String对吧.string是个类,类里面含有字段和方法.所以你懂了.
2.str是个字符串对象,知道什么叫dynamic吗.所以你懂了.记住对象在内存里面只是个指针.而指向什么类型,是可以改变的.所以str -> string.学过数据转换吧?

详细的说var str ,前面这部分,说明了一个变量,但是没给类型,
"hello world!"这是个字符串,一旦赋值给任意变量,则变量立即为字符串类型,也是字符串对象.
所以str可以去toUpperCase(),如果你能手动实现一个像string这样的类,你的问题可以完美解决.

按照C++的理论,var str是一个指针.这个指针指向一个内存地址,在该例中,str指向的是一个字符串对象地址.
在"hello world"声明之后即会保存到内存中,则就会有一个内存地址,该地址只是字符串地址,不是字符串对象地址,
而str被赋值为"hello world"的时候,系统自动会给str创建个string对象,hello world字符串则为对象里面的字段值.
而str就会指向这个新对象的地址,所以str就是string对象.

这样讲你能明白吗?
如果你觉得混乱,看下面:

c++:
var* str = new String('Hello world!');
我们的正常理解:
var str -> new String('Hello world!');
变化:
var str = new String('Hello world!');
再变化:
var str = 'Hello world!';

3.我看出来了你的眼睛只有对象对象对象,根本不知道什么叫内存,什么叫指针.也难说,搞高端开发不需要知道这些.但是你得知道js和其他语言不通,不同于java,因为他的OOP支持并不好,没有继承.
Date是方法,函数,不是对象里面的成员方法,你懂?
所以他不需要什么对象.

奉劝:
在你不了解什么叫指针的情况下,你会发现你有无数这样的问题存在,你只能将你能悟出来的解决,而之后你依然还会有很多问题存在.
所以建议你看一下,什么叫指针,你也就懂了类和对象在内存的分配方式,以及数据转换的过程.
这样,你的所有问题迎刃而解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
oszerone
2012-04-24 · 超过14用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:24万
展开全部
1、当我们给属性赋值后,如果这个属性是公有的,我们是不是能够直接使用txt.length进行访问?字符串在定义时,会自动赋值给属性length,所以我们可以直接得到一个值
2、因为字符串比较常用,按照以往的对象表示法比较繁琐,javascript将字符串对象作为原始类型进行特殊处理,其操作比较多,所以又将其作为伪对象,所以就具备了对象的所有特性,在使用字符串的对象方法和属性时,javascript会自动将原始类型转换为对象,使用完后,自动又变为原始类型
3、Date()可以算是window的一个方法,document.write(window.Date()),window可以省略,所以就是上面的写法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GOBAT蝙蝠工场
2012-04-23 · TA获得超过105个赞
知道小有建树答主
回答量:165
采纳率:0%
帮助的人:121万
展开全部
应该是刚接触javascript吧,这种思想和java不大相同,毕竟是脚本语言,方法还有一些定义都更灵活,转换下编程思路,然后再看这些东西就明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式