说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

【探秘ES6】系列专栏(八):JS的第七种基本类型Symbols

HTML文档下载 WORD文档下载 PDF文档下载
新一代JavaScript标准ES6正式发布。【探秘ES6】系列专栏将一一剖析ES6的诸多新特性,让Web开发者对此有清晰全面的了解。本文为系列的第七篇,带你了解ES6的Symbols。

ES6作为新一代JavaScript标准,已正式与广大前端开发者见面。为了让大家对ES6的诸多新特性有更深入的了解,Mozilla Web开发者博客推出了《ES6 In Depth》系列文章。CSDN已获授权,将持续对该系列进行翻译,组织成【探秘ES6】系列专栏,供大家学习借鉴。本文为该系列的第八篇。 

本期我们要讨论的symbols是个什么东西呢?

这里的Symbols不是指的徽标。

也不是能在代码中使用的小图片。


它也不是代表其它任何东西的一个别名。

当然咯,Symbols和Cymbals(铜钹)完全是两回事。


(在编程过程中使用铜钹可不是一个好主意,吵到你炸!)

言归正传,什么是Symbols呢?

它是Javascript的第七种基本类型

自1997年Javascript被标准化以来,它定义了六种基本类型。直到ES6,JS程序中任何一个值都属于以下几种类型之一。

  • Undefined
  • Null
  • Boolean
  • Number
  • String
  • Object

每种类型都是一系列值的集。前五个都是有限集。当然,Boolean类型只有true和false两个值,而且他们应该不会给Boolean型增加新值了。其它类型的值基本上都是数字和字符串。理论上说Numbers类型有18,437,736,874,454,810,627个值(包括了NaN,NaN是“Not a Number”的缩写)。String类型中可能的值就太多了,我算算大概有 (2144,115,188,075,855,872 − 1) ÷ 65,535个……当然,我这种算法不一定是精确的。

Object是一个无限集,每一个Object都是独一无二的。你随意打开一个Web页面就会生成一大堆新的Object。

ES6 Symbols也是一个集,但它的元素既不是字符串也不是对象。它是ES6的新成员:第七种基本类型。

让我们来谈谈它的应用场景。

以一个简单的布尔型来举例

在JavaScript中,有时候将一个对象中的数据扩展到其它某个对象中是十分方便的。

例如,假设你正在写一个JS库,目的是使用CSS过渡让DOM元素在屏幕上移动。你应该知道同时使用多个CSS过渡在同一个div上是行不通的。这会引起div不规律跳跃。你打算解决这个问题,不过首先你得想法知道这个元素是否正处在一个过渡中。

怎样来解决这个问题呢?

其中一种方式是使用CSS APIs让浏览器来告诉你元素是否在位移过程中。但这未免有点杀鸡用牛刀了。你的库应该存储了移动状态:代码中触发过渡的时候就应该记录了!

你真正需要的是一种方法来跟踪记录哪些元素在过渡。你可以把过渡中的元素存在一个数组中。每当你的库触发一个元素的过渡之前,先检测那个元素是否在数组中。

遗憾的是,如果数组很大的话,遍历起来会很耗时。

在你看来最简单的方法其实是为元素设置一个标识:

if (element.isMoving) {  smoothAnimations(element);}element.isMoving = true;

这样也会有一些潜在的问题。无法避免的事实是代码中会用到这个DOM的地方不止这一处。

  1. 其它代码中如果使用了for-in 或者 Object.keys()会遍历DOM的所有属性(会造成额外性能消耗)。
  2. 一些思维灵活的库作者会从技术方面考虑——你的库与其它库兼容性会很差。
  3. 一些思维灵活的库作者也会考虑扩展性——你的库扩展性也会很差。
  4. JS标准委员会将来也许会为所有元素提供一个.isMoving()的方法,那么你需要重构你的代码,那时候你就傻眼了。

当然,你可以用一个冗长或傻瓜式的字符串来作为属性名,只需确保不会和别的属性重名。

if (element.__$jorendorff_animation_library$PLEASE_DO_NOT_USE_THIS_PROPERTY$isMoving__) {  smoothAnimations(element);}element.__$jorendorff_animation_library$PLEASE_DO_NOT_USE_THIS_PROPERTY$isMoving__ = true;

代码写成这样也太虐待自己的眼睛了。

使用加密方法你可以生成一个理论上唯一的属性名:

// get 1024 Unicode characters of gibberishvar isMoving = SecureRandom.generateName();...if (element[isMoving]) {  smoothAnimations(element);}element[isMoving] = true;

object[name]语法使你可以使用任何字符串作为属性名。所以这样是可行的:不会有命名冲突,看起来还清爽!

但是,这样会导致调试体验糟透了?当你使用console.log()来打印元素的这个属性时,你会看到一大段字符串的垃圾数据。并且,这样的属性不止一个吧?你将如何保持连续性?每次重新加载的时候它们都生成不同的属性名。

为什么要搞得这么复杂?我们要得仅仅是一个简单的布尔值而已!

Symbols可以解决这个问题

Symbols集中的值可以由程序创建和并作为属性的键来使用,也不用担心名称冲突。

var mySymbol = Symbol();

调用Symbol()来创建一个新的Symbol值,它不会等同于其他值。

与字符串和数字一样,你可以使用symbol来作为属性值。因为它不等同于其它任何字符串,这个symbol-keyed属性可以确保不会与其它任何属性冲突。

obj[mySymbol] = "ok!";  // guaranteed not to collideconsole.log(obj[mySymbol]);  // ok!

接下来这方法就可以解决上面我们所讨论的那种情况:

// create a unique symbolvar isMoving = Symbol("isMoving");...if (element[isMoving]) {  smoothAnimations(element);}element[isMoving] = true;

关于这段代码的几个说明:

  • Symbol(“isMoving”)中的“isMoving”被称作描述。它对调试很有用。当你使用console.log()就可以打印出对应的symbol值,如果你想把它转换为字符串(比如说在打印错误信息的时候)可以使用.toString()。
  • element[isMoving]被称作symbol-keyed属性(使用symbol作为键的属性)。从字面意思就可以说明它就是使用symbol作为属性名而不是使用字符串。除去这一点,它和其它属性并没什么区别。
  • 和数组元素一样,symbol-keyed属性不能通过圆点符号来获取值(obj.name 这样是不行的)。它的值必须通过方括号来获取。
  • 通过symbol的值获取symbol-keyed属性值就很容易了。上面的例子展示了如何获取和设置element[isMoving],我们可以判断元素的isMoving状态了,如果有必要的话甚至可以删除isMoving状态。
  • 另一方面,以上的前提是isMoving在当前作用域中。这体现了symbols的弱封装机制:一个模块可以创建几个symbols在对象中任意使用而不用担心与其它模块的属性冲突。

因为symbol键值是被设计来避免冲突的,所以JavaScript最基本的对象检测特性是会忽略symbol键值的。以for-in循环为例,循环只会遍历对象的字符串类型的键。Symbol键直接被忽略过了。Object.key(obj)和 Object.getOwnPropertyNames(obj) 也是这样运作的。但是sysmbols并不完全是私有的:可以使用新API——Object.getOwnPropertySymbols(obj)将所对象的所有symbol键;另一个新API—— Reflect.ownKeys(obj),将会同时返回string和symbol类型的键。(在以后的文章中我们将完整地探讨Reflect API。)

在库和框架中symbols将会有很多用途,不久我们会看到,JS语言本身对它也会有广泛的使用。

symbols确切定义是什么呢?

> typeof Symbol()"symbol"

Symbols和其它基本类型大不一样。

从创建开始就是不可变的。你不能为它设置属性(如果你在严谨模式下尝试,会报类型错误)。它可以作为属性名。这是它的类字符串性质。

另一方面,每一个symbol都是唯一的。与其他的不同(就算他们的描述是一样的)你可以很容易地新创建一个。这是它的类对象性质。

ES6 symbols与Lisp和Ruby中的更传统的symbols很类似,但是没有如此紧密地集成到语言中。在Lisp中,所有的标识符都是symbols。在JS中,标识符和大多数属性的键值的首先仍是字符串,Symbols只是为开发人员提供了一个额外选择。

关于symbols的一个忠告:与JS中的其它类型不同,它不能被自动转换为字符串。试图拼接symbol与字符串将会引起类型错误。

> var sym = Symbol("<3");> "your symbol is " + sym// TypeError: can't convert symbol to string> `your symbol is ${sym}`// TypeError: can't convert symbol to string

你可以通过显示地将symbol转换为一个字符串来避免这个问题,通过String(sym)或者sym.toString()。

symbols的三种形式

有三种方法来获取symbol。

  • Call Symbol()。我们已经讨论过这种方法了,每一次调用它都将返回一个唯一的symbol。
  • Call Symbol.for(string)。这种方法访问一组已经存在的symbol注册表。与通过Symbol()来定一个唯一值不同的是,symbol注册表中的symbols是共享的。如果你调用Symbol.for(“cat”)三十次,每一次返回都将是同一个symbol。在多页面或者单页面的多模块需要共享symbol时,这是很有效的方法。
  • 使用标准中定义的Symbol.iterator。标准委员会自己定义了几种symbols。每一种都有它的特殊意义。

如果你仍然不确定symbols是否对你有帮助,这最后一个章节会很有趣,因为证实了在实践中symbols是很有用的。

ES6的文档中对通用symbols的使用是如何介绍的?

我们已经看过了ES6是如何使用symbol来避免与已有代码命名冲突的。几周前,在关于迭代器的文章中,我们了解了循环(var item of myArray)是从调用myArray[Symbol.iterator]()开始的。我提到这个方法以前的写法是myArray.iterator(),但是加了symbol以后向后兼容性会更好。

现在我们知道了symbols的用法和作用。那么就很容易理解为什么这样做和这样做的意义是什么。

这里还有其它几个ES6使用通用symbols的场景。(这些特性在Firefox中还没实现。)

  • 使instanceof可扩展。在ES6中,表达式object instanceof constructor被指定为构造函数的一个方法:constructor[Symbol.hasInstance](Object)。这表明它是可扩展的。
  • 消除新特性和旧代码之间的冲突。这比较难理解,但我们发现一些ES6的数组方法将会破坏旧网站的稳定性。其它的Web标准也会有类似的问题:仅仅是添加新方法到浏览器中,已存在的网站就会受到影响。无论如何,造成这些不稳定性的主要原因主要是由动态作用域引起的。所以ES6引入了一个特殊的symbol——Symbol.unscopables,这个Web标准可以用来防止某些方法被牵连到动态域中。
  • 支持新的字符串匹配。在ES5中,str.match(myObject)尝试将myObject转换为正则表达式对象。在ES6中,首先检查myObject是否有myObject[Symbol.match](str)方法。现在库就可以给任何有正则表达式对象的地方提供通用的解析类。

所讲到的这几个symbol的应用都不常见,很难看到这些特性本身对我们的日常代码有任何影响。从长远看就比较有意义了。通用symbols是JavaScript对于PHP和Python中的__doubleUnderscores的改进。标准委员会将来会添加新的hooks到JS中,而不会有影响已有代码的风险。

我什么时候可以开始使用ES6 symbols?

Firefox 36和Chrome 38已经支持Symbols了。我自己也在Firefox中试过了,如果你运行的时候有问题,你该知道问谁吧——找我!

为了让那些本身还不支持ES6 symbols的浏览器支持它,你可以使用pollyfill(一段代码或插件,提供了那些开发者们希望浏览器原生提供支持的功能),比如core.js。因为Symbols还比较新,所以它的pollyfill还不是那么完善,详细了解请看使用说明。

接下来的两篇博客,首先会讨论一些我们期待已久的特性终于被ES6支持了,我实在忍不住抱怨它们的姗姗来迟。我们将从两个很古老的特性作为开始(老到几乎可以追溯到编程历史的起源),紧接着讨论两个与之非常相似的特性,由ephemerons提供技术支持。下次还将深入讨论collections(集合)。

原文链接:ES6 In Depth: Symbols

本译文遵循Creative Commons Attribution Share-Alike License v3.0 

相关阅读:

【探秘ES6】系列专栏(一):ES6简介

【探秘ES6】系列专栏(二):迭代器和for-of循环

【探秘ES6】系列专栏(三):生成器

【探秘ES6】系列专栏(四):模版字符串

【探秘ES6】系列专栏(五):剩余参数和默认参数

【探秘ES6】系列专栏(六):解构赋值

【探秘ES6】系列专栏(七):箭头函数

欢迎加入CSDN前端交流群:218126086,进行前端技术交流。  

“化云为雨”一小滴:北京,3G手机+蓝牙打印机实现智能抄表 金山云与蓝汛联合提供云基础设施服务 MongoDB出新招,增加对Hive的支持 编程语言收入榜 Java排第三 直接拿来用!10段超有用的Git命令行代码 Google Cast SDK正式版发布:自动适配,修复Bug 频受红杉资本青睐,商业智能初创公司Birst靠的是什么? 2013百度世界大会要点精华回顾 WebApp开发框架Clouda、轻应用... 对新手有用的JavaScript开发小建议 磨剑三载,且看从容应对14.3万TPS的Twitter是怎样炼成的! 兰亭集势:被高估的“长尾式采购” 谁说WP手机不行?微软称已成拉丁美洲第二大移动平台 Windows 8之父Steven Sinofsky加盟风投机构A16Z SDCC 2013演讲议题抢先看 腾讯、阿里、支付宝、网易…… [开源推荐]Google开源基于Deep Learning的word2vec工具 【开源专访】DWZ团队:致力打造最简单的Web前端开发方式 Linux黑客车库创业:服务器操作系统CoreOS颠覆互联网 时间序列数据处理的角逐:MongoDB vs. Cassandra 移动周报:Sphinx游戏引擎的前世今生 联想K900评测:英特尔X86兼容性明显提升(组图) 小米手机-HAXLR8on硬件黑客马拉松:32小时的创客狂欢 鲍尔默宣布下台后,微软应该做好这几件事情 IGT张奇伟:从空间物理到博彩游戏研发 Bing即将推出新功能 用户可直接在搜索结果页购买商品 【开源专访】郑晔谈Moco框架的前世今生以及Java编程之道 CTO俱乐部第108期下午茶:电商在微信上的现状与未来 SDCC 2013讲师议题确定 门票即将售罄(图) 简化工作流程,10款必备的HTML5开发工具 六大领域考评鲍尔默微软掌舵能力,只一“C”尔? 剥离自雅虎的Hortonworks:低调发展,三年融资近1亿美元 Google的中国梦如何死于傲慢与不得力公关 “神舟三号”飞船发射成功 巨简单,可是俺不会! 上INTERNET时,如何得到本机拔号IP地址?(非局域网IP) 请问如何在DBGRID的TITLE部分,添加自定义按钮或者图像等 多进程使用单值信号量协调,设置 SEM_UNDO, 执行semop 时返回 errno = ENOSPC,如何解决 哪位大侠知道SQL server 里面的updatetext语法怎么写? 两个问题,十分简单,万望指教 偶是新手。要用到sybase数据库,但是只有PB8光盘,听说这上面只有客户端…… 哪里可以找到delphi的函数原型??回者高分伺侯!!!!!!!! 如何将数据邦定到DropDownList控件?(十万火急) 在CB中delete data[] 与delete[] data 有何不同? float 类型 的用法问题(很值得注意呀!!!!!!!!!!!!!!!!!!!!) 在BCB中的Edit菜单下有Tab order,如何才能正确的使用呢?(附详细内容) TWebBrowser 容器中,我发现居然不能拷贝其中选定的内容.为什么,那里出错了吗? 大型表的更新问题 请教:在按页滚动的记录集中怎样得知当前记录所在的页? 谁有2002年度mcse考试试题? 再贴程序员征婚照:) 在线的进来问点问题(jsp/javabean), 实在没有分了其它帖子中送出 请问哪里有介绍用Delphi开发类似Foxmail邮件程序的文章 讨论一下怎么看别人写的代码吧 有个BC源程序用了BC下特有的类complex类,怎样做才能在VC下编译通过? VB高手请进来!!!! 小弟想考cisco认证(ccna),请大家推荐好的书籍和站点! J2EE我下载了,怎么用?安装我会,安装后怎么用? 这段程序有内存泄露吗? 强列抗议???? 有关QueryInterface的菜鸟问题 如何实现和ITS原子钟进行国际标准时间较正、查询? 哪有《Essential C++》电子书,下!谢谢 在单击GRID风格的数据窗口中的行时,row参数能指示当前点击的...(请进) 请问如何使用IIS5.0 ASP连接AS400数据库,我使用ODBC为什么不可以? IE菜单问题 怎样区别打开文本文件是big5码还是gbk码?? 大侠们,更新数据库里面的Images类型的字段的SQL语句怎么写啊,有什么好方法吗? Visual studio .net是用什么开发的啊?大家来讨论一下 求好书!!!! 我如何是好! c++的CODE如何才能最好的移植成java的 求好书!!!! 谁有字符串的压缩算法!!!慷慨送分!!! 视频数据如何在数据库中操作 求好书!!!! ??? 我需检验某表单的文本框中只能有数字,字母等字符,是用javascript做,还是用JSP做? 求好书!!!! 我为何添加不了成员变量 浏览器不能浏览JAVA2写的Applet,那里可有升级包? 还是有关于图片上传,请高手帮忙 加强型的 MSFlexGrid 我认识 KiteGirl(小仙妹) ( 是个好女孩 在△abc中,AD⊥BC,垂足为D,AE是∠BAC的平分线.交BC于E,已知∠C=45°,∠B=65°,求∠AED和∠DAE的度数,要写依据 现有若干个完全相同的硬币(硬币的正,反面图案不同),按如下方式抛掷硬币.方式一:从中选取一枚硬币抛掷方式二:从中选取两枚硬币抛掷方式三:从中选取三枚硬币抛掷请你在每一种抛 六年级上册语文黄冈小状元50、51页答案 利用水滴下落可以测出重力加速度g.调节水龙头,让水一滴一滴地流出,在水龙头的正下方放一个盘子,调整盘子的高度,使第一个水滴碰到盘子时,恰好有另一个水滴从水龙头开始下落,而空中还 已知x1,x2,x3,…x40都是正整数,且x1+x2+x3+…+x40=58,x1^2+x2^2+x3^2+…+x40^2的最大值为A,最小值为B,则A+B的值等于_________. 若b分之a大于0,c分之b小于0,则ac( )0;若b分之a小于0,a小于b,则-b( )0请说答案以及解题思路. 眼镜掉漆怎么办?我的眼镜买来好几年了,都忘记是什么牌子的了,当时花了2000多块钱.现在镜架用的有些旧了,漆也掉了不少.想扔掉么觉得可惜,想补漆么又不知道哪里有的补?怎么办呢? 请告诉我一个成语,第二个和第四个字都带有人体器官的成语如:焦头烂额. 与人体器官有关的成语 谁有做过眼镜点漆或懂眼镜点漆的帮下忙…懂眼镜点漆或做过眼镜点漆的给小弟讲下都需要什么设备和技术! 求救!已知椭圆与双曲线x2-y2=1有相同的焦点,且离心率为根号2/2.求椭圆的标准方程.过点P(0,1)的直线与该椭圆交于A,B两点,O为坐标原点,若向量AP=2向量PB,求三角形AOB的面积! 某单位需要用车,准备和一个体车主或一国有出租车公司其中的一家签订合同.设汽车每月行驶x km,应付给个体车主的月租费是y1元,付给出租车公司的月租费是y2元,y1,y2分别与x之间的函数关系 眼镜掉漆了怎么办?店员说要经常洗,可是现在还是在掉,怎么办? 平行四边形,任意画一条线段,怎样划才能分割成三个图形(不包含该平行四边形本身)? 谁会?如图,M、N、T和P、Q、R分别在同一条直线上,且 ∠1=∠3,∠P=∠T,求证∠M=∠R 我家装修电视背影墙,要用到大面积斜边镜子,镜子容易掉漆嘛?比较担心镜子掉漆的问题.如果会掉,怎么样才能让镜子最大程度不掉漆.知道的大哥,大姐. 平行四边形画一条线段,出现三种不同的图形请你说好怎么画? 一道数学题,谁会啊两个大小不等的圆形粮仓,小粮仓的底面周长是12.56厘米,它的占地面积是大粮仓的三分之一,大粮仓占地面积是多少平方米? 我的眼镜有些掉漆,天津哪里有眼镜补漆?我的眼镜很好,买的时候花了760,样式我也很喜欢,可是最近有些地方漆脱落了,面积很小,也不是很显眼,我想修补一下.天津市市区内有没有可以做眼镜补 男生身高167厘米,体重51.5千克算不算胖?都刺激我啊? 比 最简单的整数比 比值8:12 ( ) ( )四分之一:八分之一 ( ) ( )0.45:0.2 ( ) ( )八分之五:0.375 ( ) ( )这是个表格甲乙两数的比是3:4,他们的和是21,甲乙两数分别是多少?3÷5= 一个梯形,正好可以分割成等底的一个平行四边形与一个三角形,已知梯形的面积是60平方厘米,那么这个三角行的面积是() 平方厘米. 要说过程. 物体A重25牛,用大小为5牛的水平拉力F拉滑轮,使物体A移动6米则拉力F做的功和重力做的功 平行四边形的底是20CM,请用一条线段把它分成一个三角形和一个梯形,使三角形的面积是梯形面积的3/7,三角形的底长(  )平方厘米. 梯形下底长是上底长的三分之二,把梯形分割成一个三角形和一个平行四边形,三角形面积占原梯形面积多少?如果能列式,请列式, 陶瓷洁具为什么不能用酸性玻璃胶 请你在下图中添加一条线段,将这个梯形分成一个平行四边形和一个三角形如果分成的平行四边形与三角形面积相等,则梯形的上底长是下底长的() 50个动物成语猴鸡狗猪各5则 同一个粗糙水平面 物体做加速运动时所受的摩擦力和匀速时候的一样吗那要是斜面呢 黄冈小状元六年级上册语文69、70、71、72页答案 一个平行四边形被分割成了一个梯形和一个三角形,梯形面积比三角形面积大2b平方厘米,求梯形上底.赏10分. 在梯形ABCD中,AD=2,BC=4,对角线AC=5,BD=3,求梯形的面积 1.在水平桌面上放一个200N的重物,现用如图8所示装置将物体匀速拉动,物体与桌面的摩擦力是48N,不考虑滑轮重力和滑轮与绳间摩擦,水平拉力 F为多少N?若绳子自由端移动的速度是0.6m/s,拉力做了 高手来解答一下这道数学题啊!有一批货物,若用小型的封闭货车运输,每次装3吨则最后一次只装2吨;若改用每次装5吨的大型卡车运输则最后一次只装了3吨,而且运输次数比小型封闭货车少了7 梯形ABCD中,AD‖BC,AD=1,BC=4对角线AC=4,BD=3,求梯形的面积 如图所示,A物重200N,当B物重为30N时,A物恰好能沿水平桌面匀速向右移动.(1)A物与桌面的摩擦力多少?(2)若用一个水平向左的力拉A物,使它以0.5m/s的速度匀速向左移动,拉力F应为多大?5s内物体 公元6世纪,中国的有一道著名的百鸡问题:"今有鸡翁一值钱五,鸡雏三值钱一,鸡母一值钱三,凡百钱买百鸡,问鸡翁,鸡母,鸡雏各几只?"设计三个求解的算法,用自然语言把它描述出来. 月球地球半径比1:3.6月地表面重力加速度比1:6求月地密度比;第二问,若月球半径为1700KM,重力加速度为1.6使月球有大气层,气压为100000PA 估算大气层总质量 若|a-1|+【(b+2)的平方】=0 ,求【(a+b)的2010次方】+【a的2011次方】的值. 请帮我解答一下这道数学题,谢谢! 质量为0.5kg的木块,放在倾角为37的斜面恰能匀速下滑,若倾角减小到30,物体所受摩擦力? 小满家的电话号码是六位数 其中左边3个数字相同 右边3个数字是三个连续的自然数 这6个数字之和恰好等于末尾的两位数 你知道小满家的电话号码是多少吗 mn分之m²-n²)²除以(m+n)²乘(m-n分之m)³,其中m=3,n=2 沿三十度斜面 100kg物体匀速拉到顶端 各处摩擦力省略 在矩形ABCD中,对角线AC,BD相交于点O,过点O作OE垂直于BC,垂足为E,连结DE交AC于点P,过P作PF垂直于BC,垂足为F,则CF:CB的值是什么 (2010•台州)类比学习:一动点沿着数轴向右平移3个单位,再向左平移2个单位,相当于向右平移1个单位.用实数加法表示为3+(-2)=1.若坐标平面上的点作如下平移:沿x轴方向平移的 用100N的力拉一物体,摩擦力只有20N,为什么 在Rt三角形ABC中,角C=90度,AC=5,BC=12,若以点C为圆心,R为半径所作的圆与斜边AB没有公共点,则R的取值范围是? 人教版五年级上册小状元数学黄冈小状元49页的培优题怎么写? 请教如何把用玻璃胶粘合的镜子取下来? 某人利用滑轮组匀速提起重400牛的物体,所用的拉力是250N,物体上升2米.1.求此人做的额外功2.此滑轮组的机械效率.通过动滑轮的有两股绳子 查找关于有动物名称的成语 研究发现某星球的半径是地球的0.8倍,质量是地球的0.96倍,求该星球重力加速度和第一宇宙速度 黄冈小状元六年级上册语文50页答案 数学题,很急. 研究发现某星球的半径是地球的0.5倍,质量是地球的0.5倍,求该星球重力加速度和第一宇宙速度研究发现某星球的半径是地球的0.5倍,质量是地球的0.5倍,重力加速度为9.8M/S^2,求该星球重力加速度 要50页以后的. 如图,在梯形ABCD中,∠DCB=90°,AB‖CD,AB=25,BC=24.将该梯形折叠,点A恰好与点D重合,BE为折痕,那么AD的长度为________ 是一道填空,注意看!条件 :甲仓库有240吨化肥条件:算式乙仓库有化肥192吨 甲仓库比乙仓库多百分之几?240/192乙仓库有化肥多少吨?240*25%比乙仓多25% 240/(1+25%)乙仓库有化肥多少吨?240*(1-25% 高中物理 拉力公式
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘