2009年3月2日星期一
品牌乎?暴利乎?策略乎?可学乎?
男士也许该怀疑,大宝是暴利产品吗?NO。这里的化妆品是指进口高端产品。SK-II著名的神仙水在中国零售价格为560元,而其 制造成本仅为人民币6.5元。惊讶么?就算研发成本都加进去,每单只成本也不超过人民币10元。资生堂650元/50克的眼霜连包装成本也只有10元不 到。而欧伯莱那些150元左右的低端眼霜成本仅在3元左右。呵呵女士们,现在不再认为你们往脸上涂抹的是什么高科技产品了吧?在这里,女士是第一受害大 头!
2:日用品
其中以个人清洁化学制品利润最恐怖。李工以牙膏为例,其中最贵的成分―发泡剂成本仅为600元/吨左右甚至更低, 而这600元的发泡剂足足能够装满6000只最大号的180克牙膏。剩余的有效成分成本更是可以忽略不计了,碳酸钙粉末每吨用量成本仅为120元左右,最 高级的含氟牙膏其有效成分―单氟磷酸钠每吨成本不过100元。国产的低端产品就不算了,就算是用硅磨料的佳洁士,180克装市场零售价为13元左 右,6000只能卖多少钱?洗头水就不说了,比这个更恐怖。
3:饮料
这其中,非碳酸类果汁饮料的利润最大,市场零售价2块钱的果汁饮料连包装成本+设备成本只有7分钱,而易拉罐饮料则更低,仅有5分钱。
4:白酒
以五粮液酒厂为例,每吨粮食能够生产100市斤左右白酒,其中10市斤最品质好的是五粮液,其余则被用作什么五粮春啦、浏阳河啦类似低端产品。每吨粮食 的收购价格大概是400块钱,而生产出的产品在市场上零售则最多可达到15000元左右。大家不要相信某些白酒所谓的N年陈酿,厂家没那耐心真的去陈酿, 只不过是用现代工业的催化剂加快发酵过程罢了。
5:药品
药品的暴利大家是知道的。在一般人的眼睛里,药品的利润应该是最高的。但 事实却不是如此。比较以上行业,药品的设备、厂房及研发成本都要高出许多,所以只能排在第5。而进口药品的配方研发一般是在国外进行,导致其研发成本更 高。虽然其有效成分不值几个钱,但厂家的时常出新却是实实在在的。当金六福卖不动的时候,五粮液可以注册一个金七福的品牌继续卖以前的酒,而药品却不行。 新药就是新药,没听说过麦迪霉素淘汰以后改个名字继续卖的。
6:保健品
这东西是咱中国人民的老朋友了,从太阳神到脑白金,就从来 没有一个保健品能真正起到其宣传效果。这里排行的保健品是指真正意义上的由正规厂家通过正规配方生产的产品,并非假冒伪劣产品。由于行业竞争激烈,保健品 在前两年的暴利状况已经改观了很多,尤其是异军突起的脑白金,虽说是购买美国的淘汰配方,但其不到200的售价比起其每单位十多元的成本(包括包装成本、 配料成本、广告成本)来说,比例显然低了很多。与药品不同的是,保健品的研发及设备成本相对较低,吃不死人就成,最好也别吃出事来。
7:通讯
其中以移动通讯更甚,典型的一次投入长久收益的例子。GSM基站每台的造价约为人民币20万,但其确可以负担最多15万门的信号流量,以每人40元月租 算,就算这15万人不打电话,一个月的月租就能买30个基站。当然,移动通讯行业还有其他设备及科技成本投入,这里就不细算了,总之将其排在第七位比较合 理。
8:软件
任何软件在中国卖的都不好,这里阿拉只针对买正版的人。每张光盘的制造成本是9分钱,高档软件的包装成本不过5元 钱,但软件的大头往往在于研发。WINDOWS98卖了近8年,赚的钱已经足够再研发40个WIN98了,但是这是外国。如果比尔盖茨生在中国,相信其早 被饿死或还在中关村当装机工。
9:小家电
比起冰箱彩电,小家电的成本最低,利润最高。飞利浦就是做小家电起家的大公司之一。其实,1800元的刮胡刀制造成本往往只比180元的刮胡刀高1.5-2倍,但在零售时却可以卖到10倍价钱。谁用飞利浦刮胡刀举手:您好几百的高科技产品其实也就值20块钱。
2009年2月27日星期五
自我激励下
老鹰是世界上寿命最长的鸟类,它一生的寿命可达70岁,
但是能活那么久,却必须在40岁时做一个困难却重要的决定。
当老鹰活到40岁时,它的爪子开始老化,无法有效的抓住猎物,
它的啄变的又长又弯,几乎碰到胸膛,它的翅膀变的十分沉重,
因为它的羽毛长得又浓又厚,使得飞翔十分吃力,它只有两种选择,
等死或经过一个痛苦的更新过程,它必须很努力的飞到山顶,
再悬崖上筑巢,停留在那里,不得飞翔,老鹰首先用它的啄击打岩石,
直到完全脱落,然后静静的等待新的啄长出来,
它会用新的啄把指甲一根根的拔出来,当新的指甲长出来以后,
它便把羽毛一根根的拔掉,五个月后,新的羽毛长出来,
老鹰开始飞翔,生命又得以延续另外一个精彩的30年。
老鹰尚且如此,何况是我们人呢,
一个人的成长过程也一样,必须经过蜕变期,才能延续发展,
磨难历练是一个人必须经历的事。
是一笔财富,正是如此,才得以成熟,意志得以磨练,
性情得以锻造,所有的东西得以升华。有道是不经历风雨,
怎么见彩虹。
成长意味着脱离幼稚期,走向成熟理性。遇到问题冷静,
客观地进行思考,判断做出正确的选择。
我们有些朋友就是一般成谜于现在的辉煌,满足于现在成就,
我 之前其实做技术的工资已经很稳定了,加奖金7788算起来够生活了,如我我一直坚持下去或许也是走技术发展的道路,但我综合自己的性格和人生价值观念,发 现业务更加适合我,特别是LINXX对我的鼓舞让我更是莫大的鞭策,从技术转型到业务,也是一次心里焦脆的心里博弈,放弃诱人的高薪,人家从零开始,而我 的起步却是负数,没有经验,对销售完全没概念,还要打破过去僵化的技术思维,薪水还不如工厂里的工资高,是需要很大的勇气的。
后来从一个门外汉逐 步转为一个合格的销售,高级的销售,这个中间我最应该感谢的是一个香港的朋友Michael,是他不离不弃,手把手的教我,由于没有经验,经常是受到其他 部门的人的排挤,,职场的黑暗与斗争啊,不亚于在政府部门里,人的一生中总是会碰到几个个贵人的协助(只要是个积极向上的,诚实勤奋的,总是会有人欣赏你 的)
一个犹太人的家庭教育 (转)
摘自:http://bbs.esmchina.com/FORUM_POST_1000164045_1200438479_0.HTM
一个犹太人的家庭教育
1992年,当我辗转回到以色列的时候, 13岁的老大、12 岁的老二和10 岁的小女儿都还暂时留在中国。选择在那时回到以色列,完全是穷途末路:我的父亲是犹太人,二战时逃亡到上海,并在那里生下了我。母亲在我很小的时候就抛弃 了我们,12 岁那年父亲去世,我就成了孤儿。长大后,我在上海铜厂当体力女工。结婚生下3 个孩子后,丈夫离我们而去。留在上海,满眼都是痛苦的回忆。正好那时中以正式建交,怀着一种逃避的心情,我成为了第一批回到以色列的犹太后裔。
初到以色列的日子,比想象中要困难许多。我不懂得那里的语言( 父亲教的古希伯莱语早已不在以色列使用) ,不懂得移民优惠政策( 新移民可以有一笔安家费),在特拉维夫的大街上,我压根不知道怎样才能生存下去。
我从上海带去的积蓄只能维持3个月的生活开支,我必须找到赚钱的办法,还要早日把孩子接到我身边。我苦攻希伯莱语,学最基本的生活语言,然后,我在路边摆了个投资最小的小摊卖春卷。
以色列的官方货币是谢克尔,1谢克尔兑换人民币 2块钱,更小的币值是雅戈洛, 1谢克尔等于100 雅戈洛。我的春卷小摊,每天能赚到十来个谢克尔。
当我的小摊生意慢慢稳定下来以后,1993年5月,我把 3个孩子都接到了以色列。
孩子们初到以色列的时候,受到了不少邻居们的责难。以前在国内时,我一直秉承再苦不能苦孩子的原则,到了以色列以后,我依旧做着我合格的中国式妈 妈:我把孩子们送去学校读书,他们上学的时候我卖春卷。到了下午放学的时候,他们就来春卷摊,我停止营业,在小炉子上面给他们做馄饨下面条。
一天,当 3个孩子围坐在小炉子旁边等我做饭的时候,邻居过来训斥老大: "你已经是大孩子了,你应该学会去帮助你的母亲,而不是在这里看着你母亲忙碌,自己就像废物一样。 "然后,邻居转过头训斥我:" 不要把那种落后的中国式教育带到以色列来,别以为生了孩子你就是母亲……"
邻居的话很伤人,我和老大都很难受,回家后,我安慰老大:" 没事的,妈妈能撑住,我喜欢照顾你们。"可是,老大说: "也许,她说得没错。妈妈,让我试着去照顾弟弟妹妹吧 ……"
第二天是祈祷日,孩子们中午就放学了。来到我的小摊,老大坐在我旁边,学着我的样子把打好的春卷皮包上馅,卷成成品,然后入油锅去炸。他的动作一开始有些笨拙,但是后来越来越熟练
| ||
| | ||
――老师授课的内容很对他们胃口,因为没有奉献精神之类的说教。老师问过他们这样一个问题: "当遭到异教徒的袭击,必须逃命的时候,你会带着什么逃走? "对于这个问题,回答 "钱 "或" 宝石"是不对的。这是因为,无论是钱还是宝石,一旦被夺走就会完全失去。正确的答案是 "教育 "。与财物不同,只要人活着,教育就不可能被别人夺走。他们很赞赏老师说的这么一句话: "如果你想将来成为富翁,就学好眼前的东西,它们将来都会大有用处的 ……"
当老大在法律课上学习了移民法后,他告诉我像我们这样的家庭应该可以去移民局领取安家费。我半信半疑去了,结果一下领回了 6000谢克尔的安家费,这对我们一家来说可是一笔了不得的财产。然后,老大跟我说因为他给我提供了信息,我应该付给他 10%的酬金。我犹豫很久,终于决定把600 谢克尔这笔大钱给他,他拿到钱后,给我和弟弟妹妹都买了很漂亮的礼物,剩下的钱,他说他会拿去变成更多的钱。
老大用这笔酬金邮购了一批在国内很便宜的文具,然后去学校进行售卖,利润再投入继续进货, 1年以后,他户头上的金额就已经超过了2000 谢克尔。
尽管老大很会赚钱,但在实际上,老二比他更能领会犹太法则的精髓―― 犹太人共同的一点是,从事那些不用投入本钱的行业,从事其他人不做的、无须花钱和投资的工作。当老大在利用国内的资源赚钱的时候,老二也在如此做着,不 过,他赚的是不需要成本的精神领域的利润―― 老二以他14 岁的年龄和文笔,竟然在报纸上开设了自己的专栏,专门介绍上海的风土人情,每周交稿2 篇,每篇1000字,每月 8000雅戈洛。
老三是女孩子,因为比较矜持,也没有展露出赚钱方面的才能,但是我在她身上欣慰地看到了犹太人对生活的乐观和优雅。她学会了煮茶和做点心,每天晚 上,她会精心煮一壶红茶,配上她自创的口味不同的点心,一家人围坐下来边吃边聊天 ――老三的点心有点中西合璧的味道,两个哥哥都很喜欢。不过,这些点心不是免费的,两个哥哥支付的点心费用,刨开成本和每天需要交给我的费用外,老三也能 活得很滋润。
当我们家的资金越来越丰富的时候,我们一家4口合资开办了我们家的中国餐厅。我占40%股份、老大 30%、老二 20%、老三10 %。当我们家的餐厅越来越有名的时候,我也引起了很多关注。当我获得拉宾的接见后,我成了以色列的名人。此时的我已经完全掌握了希伯莱文,再加上我的母语 中文,我最后被以色列国家钻石公司邀请担任驻中国首席代表。
| ||
| | ||
2009年2月26日星期四
轻松几步获得上万点击率(三)(转)
摘自:http://blog.csdn.net/diehuan2008/archive/2009/02/25/3934359.aspx
首先说明一下,原来的《SEO优化完全手册》改名为《轻松几步获得上万点击率》
这一节我们来一起讨论一下关于元标记和网页描述的优化。所谓的元标记,其实就是网页代码头部<head>和</head>之间的META内容。下面我们首先来看一段比较全面的META标签代码
- <META NAME="Title" CONTENT="2009年最新SEO培训教材下载">
- <META NAME="Author" CONTENT="土著游民">
- <META NAME="Subject" CONTENT="SEO教程">
- <META NAME="Description" CONTENT="本文主要提供SEO教材的下载和在线阅读.">
- <META NAME="Keywords" CONTENT="SEO">
- <META NAME="Generator" CONTENT="Dreamweaver">
- <META NAME="Language" CONTENT="zh-CN">
- <META NAME="Expires" CONTENT="如:Wed, 27 Sep 2009 08:21:57 GMT">
- <META NAME="Abstract" CONTENT="SEO 教程">
- <META NAME="Copyright" CONTENT="?www.zeacens.com">
- <META NAME="Designer" CONTENT="土著游民">
- <META NAME="Publisher" CONTENT="子信立远">
- <META NAME="Revisit-After" CONTENT=" 7 days ">
- <META NAME="Distribution" CONTENT="Global">
- <META NAME="Robots" CONTENT="All">
在这些代码中,每一行的META内容都有不同的意义,主要的用途如下表所属。
注:下表中的META标题,就是指META NAME=,例如META NAME="Title",那么META标题就是title
| META标题 | 代表含义 | 使用方法 |
| Title | 网页主题 | 通常这里的值是网页的内容标题 |
| Author | 内容作者 | 这里是指网页上的内容作者,例如本篇文章的作者是我,那么该值就为土著游民。 |
| Subject | 内容的主题 | 主要是指这篇文章的主题是什么,核心内容是什么。 |
| Description | 网页内容描述 | 用一句话(不超过255个字符)来描述本篇网页的大致内容。 |
| Keywords | 网页关键词 | 内容的主要关键词,最好不超过三个 |
| Generator | 网页编辑设计软件 | 主要是指你是用什么编辑器做这个网页的,例如Dreamweaver |
| Language | 网页所使用的语言 | 一般中文网页,就是zh-CN,注意,这里是指语言,而不是网页编码 |
| Expires | 网页有效期 | 这里是对时效性很强的网页的一个时间限制,如果到了在这里写的期限,则必须重新传输。这里的时间格式采取格林威治时间(GMT) |
| Abstract | 网页摘要 | 指这个网页文件本身内容的摘要 |
| Copyright | 网页版权 | 指本网页的版权归属 |
| Designer | 网页设计者 | 制作网页的人名 |
| Publisher | 出版者 | 这个内容是指网页内容的出版或者发行机构名称 |
| Revisit-After | 重访时间 | 一般大型网站,蜘蛛爬行频率相当频繁,导致服务器重压。因此做这样的限制是让蜘蛛在限定日期内重访,例如7 days就是七天访问一次 |
| Distribution | 网站发布范围 | 是指网站都在哪些地区范围出现,一般设置为Global即为全球范围。 |
| Robots | 搜索引擎机器人向导 | 这一点比较重要,主要是对搜索引擎蜘蛛的引导,后面文章详细说明 |
通过这张表,我们基本上可以了解一些META的大致知识,以上的这张表所填写的内容都是给搜索引擎蜘蛛“看”的东西,另外还有很多页面规则使用的META,在这里不做详细的讨论。
这里要特别强调一下META NAME="Robots"的写法,因为如果这行代码一旦使用错误或者是使用不当,将会直接把搜索引擎蜘蛛拒之门外,你的网站也很有可能不被搜索引擎收录。
在META NAME="Robots"的写法中,一般有一下几个关键语法。
ALL-不拒绝任何搜索引擎蜘蛛的索引,不拒绝任何搜索引擎的行为
NOINDEX -不索引当前页面
INDEX -索引当前页面
NOFOLLOW -不跟踪当前页面中所有的链接
FOLLOW -跟踪当前页面中所有的链接
NOARCHIVE -在搜索结果中不保存当前页面的快照
ARCHIVE -在搜索结果中不保存当前页面的快照
NOSNIPPET - 在搜索结果中不采用当前页面的头部描述信息,且不保存当前页面的快照
NOODP -搜索结果中不使用DMOZ中的描述信息,Yahoo、MSN也支持此类标签
NONE -不索引当前页面以及其中的所有链接,跟“NOINDEX, NOFOLLOW” 含义相同。
在实际使用中,我们一般是用如下的办法。
<meta name="robots" content="index,follow">
如果要包含多个属性,我们需要在中间以英文的逗号分割。有一点需要注意的是,不可以将两个反义词同时使用,比如index和noindex。另外,实际使用时,如下代码:
<meta name="robots" content="index,follow">
可以直接写成
<meta name="robots" content="all">
<META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW">
可以写成
<META NAME="ROBOTS" CONTENT="NONE">
以上的META信息是对页面本身给搜索引擎的一个说明。而有些时候,我们可能需要拒绝搜索引擎来访问我们网站的某个文件夹(例如后台文件夹),或者是要屏蔽一些搜索引擎的索引,我们就可以采取使用robots.txt文件来限制一些权限。本章内容主要将META信息的优化,因此不做讨论。
在我们日常SEO优化时,最多、也是最长使用的META信息只有Keywords、Description这些简单的META信息。因为之前我们简单讨论过关键词的选取,因此对于元标签的优化,我们重点来分析Description。 在SEO的过程中,我们可以发现一个很有趣的现象,如果一张网页中的Description写法不规范,或者是没有Description的时候,搜索引擎索引并显示的内容是整个网页前面的一些字符。而如果Description非常标准的话,就显示的是Description的内容。也正因为此,Description在网页排序中有着很重要的作用。有些时候title和keywords里是对整个网页的几个关键词或者一句话,而在Description中,我们就可以用长达255个字符的一段话来形容这个网页的内容了。只要Description的写法规范,而且其中的关键词布局优秀的话,那么取得一个好的排名也不是很难的事。当然了,其实这里以Description作为索引并不仅仅是因为Description写的规范,还有一个方面是,如果你的网页内容更能匹配用户的查询的话,那么在索引中就会显示你网页上的一些内容。一般来说,Description最大的作用,就是如果搜索引擎一旦找不到你网页中的实际内容的话,就以Description的内容作为显示的索引内容。 在Google网站管理员工具中,有个非常有用的工具——网页内容分析。它可以对你网站中所有的Description做出一个准确的判断和建议,例如哪些Description是重复的,哪些Description太短或者太长,哪些Description是和网页内容无关的等等问题。(Google网站管理员工具:http://www.google.com/webmasters/tools?hl=zh_CN)
Description标签的优化写法
在很多的网页中,我看到站长们总是会把Description的内容和keywords的内容写的一模一样,有些甚至是干脆把内容中的一段或者全部的内容复制到Description中,这样的做法是很不利于网页在搜索引擎中的排名的。另外,还有一些站长会在整个一个网站的所有网页中都使用相同的Description,这也是SEO中的大忌,需要避免。
因此,正确的优化写法应该如下
・Description是描述网页内容的,因此最好是可以用一句话来概括本网页的主题内容,这个有点类似于我们小时候写作文,写中心思想的形式。
・Description不要超过255个字符,搜索引擎索引一般都会索引Description的前255个字符,因此,这255个字符是做搜索引擎优化的关键。
・这里有一个小技巧:如果你使用的网页编码是UTF-8,那么在Description中的标点符号最好都使用英文,例如英文的逗号、句号等。如果是中文的话,那么就使用中文的标点符号即可。
一个正确的Description格式:以本篇文章为例,Description的基本写法如下(UTF-8):
<META NAME="Description" CONTENT="本文描述SEO优化中对于元标签和网页描述的优化,另外对于网页META标签做简单的介绍."/>
注意看,上面的描述结束后,最后部分有一个“/”,在标准的网页代码写法中,这个/是不可或缺的。有一点需要记住:同样内容的两个不同网站的网页,如果A网站的网页代码编写规范、完全符合W3C标准,那么就会比B网站不符合网页编码规范的排名要高。
学习JavaScript 的必备 (一),让您对js的 function, javascript内置对象,this概念及之间的关系不再迷惑。(希望能置为推荐篇,为更多的js初学者关注)(转)
-------------------该文摘自于匿名教程总结,希望对初学js的同学有帮助,因为它解决了我学习js的众多迷惑。。。
函数是进行模块化程序设计的基础,编写复杂的Ajax应用程序,必须对函数有更深入的了解。
javascript中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的。通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递。在继续讲述之前,先看一下函数的使用语法:
以下是引用片段:
function func1(…){…}
var func2=function(…){…};
var func3=function func4(…){…};
var func5=new Function();
这些都是声明函数的正确语法。它们和其他语言中常见的函数或之前介绍的函数定义方式有着很大的区别。那么在JavaScript中为什么能这么写?它所遵循的语法是什么呢?下面将介绍这些内容。
认识函数对象(Function Object)
可以用function关键字定义一个函数,并为每个函数指定一个函数名,通过函数名来进行调用。在JavaScript解释执行时,函数都是被维护为一个对象,这就是要介绍的函数对象(Function Object)。
函数对象与其他用户所定义的对象有着本质的区别,这一类对象被称之为内部对象,例如日期对象(Date)、数组对象(Array)、字符串对象 (String)都属于内部对象。这些内置对象的构造器是由JavaScript本身所定义的:通过执行new Array()这样的语句返回一个对象,JavaScript内部有一套机制来初始化返回的对象,而不是由用户来指定对象的构造方式。
在JavaScript中,函数对象对应的类型是Function,正如数组对象对应的类型是Array,日期对象对应的类型是Date一样,可以通 过new Function()来创建一个函数对象,也可以通过function关键字来创建一个对象。为了便于理解,我们比较函数对象的创建和数组对象的创建。先 看数组对象:下面两行代码都是创建一个数组对象myArray:
以下是引用片段:
var myArray=[];
//等价于
var myArray=new Array();
同样,下面的两段代码也都是创建一个函数myFunction:
function myFunction(a,b){
return a+b;
}
//等价于
var myFunction=new Function("a","b","return a+b");
通过和构造数组对象语句的比较,可以清楚的看到函数对象本质,前面介绍的函数声明是上述代码的第一种方式,而在解释器内部,当遇到这种语法时,就会自 动构造一个Function对象,将函数作为一个内部的对象来存储和运行。从这里也可以看到,一个函数对象名称(函数变量)和一个普通变量名称具有同样的 规范,都可以通过变量名来引用这个变量,但是函数变量名后面可以跟上括号和参数列表来进行函数调用。
用new Function()的形式来创建一个函数不常见,因为一个函数体通常会有多条语句,如果将它们以一个字符串的形式作为参数传递,代码的可读性差。下面介绍一下其使用语法:
以下是引用片段:
var funcName=new Function(p1,p2,...,pn,body);
参数的类型都是字符串,p1到pn表示所创建函数的参数名称列表,body表示所创建函数的函数体语句,funcName就是所创建函数的名称。可以不指定任何参数创建一个空函数,不指定funcName创建一个无名函数,当然那样的函数没有任何意义。
需要注意的是,p1到pn是参数名称的列表,即p1不仅能代表一个参数,它也可以是一个逗号隔开的参数列表,例如下面的定义是等价的:
以下是引用片段:
new Function("a", "b", "c", "return a+b+c")
new Function("a, b, c", "return a+b+c")
new Function("a,b", "c", "return a+b+c")
JavaScript引入Function类型并提供new Function()这样的语法是因为函数对象添加属性和方法就必须借助于Function这个类型。
函数的本质是一个内部对象,由JavaScript解释器决定其运行方式。通过上述代码创建的函数,在程序中可以使用函数名进行调用。本节开头列出的函数定义问题也得到了解释。注意可直接在函数声明后面加上括号就表示创建完成后立即进行函数调用,例如:
以下是引用片段:
var i=function (a,b){
return a+b;
}(1,2);
alert(i);
这段代码会显示变量i的值等于3。i是表示返回的值,而不是创建的函数,因为括号“(”比等号“=”有更高的优先级。这样的代码可能并不常用,但当用户想在很长的代码段中进行模块化设计或者想避免命名冲突,这是一个不错的解决办法。
需要注意的是,尽管下面两种创建函数的方法是等价的:
以下是引用片段:
function funcName(){
//函数体
}
//等价于
var funcName=function(){
//函数体
}
但前面一种方式创建的是有名函数,而后面是创建了一个无名函数,只是让一个变量指向了这个无名函数。在使用上仅有一点区别,就是:对于有名函数,它可以出现在调用之后再定义;而对于无名函数,它必须是在调用之前就已经定义。例如:
以下是引用片段:
<script language="JavaScript" type="text/javascript">
<!--
func();
var func=function(){
alert(1)
}
//-->
</script>
这段语句将产生func未定义的错误,而:
以下是引用片段:
<script language="JavaScript" type="text/javascript">
<!--
func();
function func(){
alert(1)
}
//-->
</script>
则能够正确执行,下面的语句也能正确执行:
以下是引用片段:
<script language="JavaScript" type="text/javascript">
<!--
func();
var someFunc=function func(){
alert(1)
}
//-->
</script>
由此可见,尽管JavaScript是一门解释型的语言,但它会在函数调用时,检查整个代码中是否存在相应的函数定义,这个函数名只有是通过function funcName()形式定义的才会有效,而不能是匿名函数。
函数对象和其他内部对象的关系
除了函数对象,还有很多内部对象,比如:Object、Array、Date、RegExp、Math、Error。这些名称实际上表示一个类型,可 以通过new操作符返回一个对象。然而函数对象和其他对象不同,当用typeof得到一个函数对象的类型时,它仍然会返回字符串“function”,而 typeof一个数组对象或其他的对象时,它会返回字符串“object”。下面的代码示例了typeof不同类型的情况:
以下是引用片段:
alert(typeof(Function)));
alert(typeof(new Function()));
alert(typeof(Array));
alert(typeof(Object));
alert(typeof(new Array()));
alert(typeof(new Date()));
alert(typeof(new Object()));
运行这段代码可以发现:前面4条语句都会显示“function”,而后面3条语句则显示“object”,可见new一个function实际上是 返回一个函数。这与其他的对象有很大的不同。其他的类型Array、Object等都会通过new操作符返回一个普通对象。尽管函数本身也是一个对象,但 它与普通的对象还是有区别的,因为它同时也是对象构造器,也就是说,可以new一个函数来返回一个对象,这在前面已经介绍。所有typeof返回 “function”的对象都是函数对象。也称这样的对象为构造器(constructor),因而,所有的构造器都是对象,但不是所有的对象都是构造 器。
既然函数本身也是一个对象,它们的类型是function,联想到C++、Java等面向对象语言的类定义,可以猜测到Function类型的作用所 在,那就是可以给函数对象本身定义一些方法和属性,借助于函数的prototype对象,可以很方便地修改和扩充Function类型的定义,例如下面扩 展了函数类型Function,为其增加了method1方法,作用是弹出对话框显示"function":
以下是引用片段:
Function.prototype.method1=function(){
alert("function");
}
function func1(a,b,c){
return a+b+c;
}
func1.method1();
func1.method1.method1();
注意最后一个语句:func1.method1.mehotd1(),它调用了method1这个函数对象的method1方法。虽然看上去有点容易 混淆,但仔细观察一下语法还是很明确的:这是一个递归的定义。因为method1本身也是一个函数,所以它同样具有函数对象的属性和方法,所有对 Function类型的方法扩充都具有这样的递归性质。
Function是所有函数对象的基础,而Object则是所有对象(包括函数对象)的基础。在JavaScript中,任何一个对象都是 Object的实例,因此,可以修改Object这个类型来让所有的对象具有一些通用的属性和方法,修改Object类型是通过prototype来完成 的:
以下是引用片段:
Object.prototype.getType=function(){
return typeof(this);
}
var array1=new Array();
function func1(a,b){
return a+b;
}
alert(array1.getType());
alert(func1.getType());
上面的代码为所有的对象添加了getType方法,作用是返回该对象的类型。两条alert语句分别会显示“object”和“function”。
将函数作为参数传递
在前面已经介绍了函数对象本质,每个函数都被表示为一个特殊的对象,可以方便的将其赋值给一个变量,再通过这个变量名进行函数调用。作为一个变量,它 可以以参数的形式传递给另一个函数,这在前面介绍JavaScript事件处理机制中已经看到过这样的用法,例如下面的程序将func1作为参数传递给 func2:
以下是引用片段:
function func1(theFunc){
theFunc();
}
function func2(){
alert("ok");
}
func1(func2);
在最后一条语句中,func2作为一个对象传递给了func1的形参theFunc,再由func1内部进行theFunc的调用。事实上,将函数作为参数传递,或者是将函数赋值给其他变量是所有事件机制的基础。
例如,如果需要在页面载入时进行一些初始化工作,可以先定义一个init的初始化函数,再通过window.onload=init;语句将其绑定到页面载入完成的事件。这里的init就是一个函数对象,它可以加入window的onload事件列表。
传递给函数的隐含参数:arguments
当进行函数调用时,除了指定的参数外,还创建一个隐含的对象——arguments。arguments是一个类似数组但不是数组的对象,说它类似是 因为它具有数组一样的访问性质,可以用arguments[index]这样的语法取值,拥有数组长度属性length。arguments对象存储的是 实际传递给函数的参数,而不局限于函数声明所定义的参数列表,例如:
以下是引用片段:
function func(a,b){
alert(a);
alert(b);
for(var i=0;i<arguments.length;i++){
alert(arguments[i]);
}
}
func(1,2,3);
代码运行时会依次显示:1,2,1,2,3。因此,在定义函数的时候,即使不指定参数列表,仍然可以通过arguments引用到所获得的参数,这给 编程带来了很大的灵活性。arguments对象的另一个属性是callee,它表示对函数对象本身的引用,这有利于实现无名函数的递归或者保证函数的封 装性,例如使用递归来计算1到n的自然数之和:
以下是引用片段:
var sum=function(n){
if(1==n)return 1;
else return n+sum(n-1);
}
alert(sum(100));
其中函数内部包含了对sum自身的调用,然而对于JavaScript来说,函数名仅仅是一个变量名,在函数内部调用sum即相当于调用一个全局变量,不能很好的体现出是调用自身,所以使用arguments.callee属性会是一个较好的办法:
以下是引用片段:
var sum=function(n){
if(1==n)return 1;
else return n+arguments.callee(n-1);
}
alert(sum(100));
callee属性并不是arguments不同于数组对象的惟一特征,下面的代码说明了arguments不是由Array类型创建:
以下是引用片段:
Array.prototype.p1=1;
alert(new Array().p1);
function func(){
alert(arguments.p1);
}
func();
运行代码可以发现,第一个alert语句显示为1,即表示数组对象拥有属性p1,而func调用则显示为“undefined”,即p1不是arguments的属性,由此可见,arguments并不是一个数组对象。
函数的apply、call方法和length属性
JavaScript为函数对象定义了两个方法:apply和call,它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数的方式有所区别:
以下是引用片段:
Function.prototype.apply(thisArg,argArray);
Function.prototype.call(thisArg[,arg1[,arg2…]]);
从函数原型可以看到,第一个参数都被取名为thisArg,即所有函数内部的this指针都会被赋值为thisArg,这就实现了将函数作为另外一个 对象的方法运行的目的。两个方法除了thisArg参数,都是为Function对象传递的参数。下面的代码说明了apply和call方法的工作方式:
以下是引用片段:
//定义一个函数func1,具有属性p和方法A
function func1(){
this.p="func1-";
this.A=function(arg){
alert(this.p+arg);
}
}
//定义一个函数func2,具有属性p和方法B
function func2(){
this.p="func2-";
this.B=function(arg){
alert(this.p+arg);
}
}
var obj1=new func1();
var obj2=new func2();
obj1.A("byA"); //显示func1-byA
obj2.B("byB"); //显示func2-byB
obj1.A.apply(obj2,["byA"]); //显示func2-byA,其中[“byA”]是仅有一个元素的数组,下同
obj2.B.apply(obj1,["byB"]); //显示func1-byB
obj1.A.call(obj2,"byA"); //显示func2-byA
obj2.B.call(obj1,"byB"); //显示func1-byB
可以看出,obj1的方法A被绑定到obj2运行后,整个函数A的运行环境就转移到了obj2,即this指针指向了obj2。同样obj2的函数B也可以绑定到obj1对象去运行。代码的最后4行显示了apply和call函数参数形式的区别。
与arguments的length属性不同,函数对象还有一个属性length,它表示函数定义时所指定参数的个数,而非调用时实际传递的参数个数。例如下面的代码将显示2:
以下是引用片段:
function sum(a,b){
return a+b;
}
alert(sum.length);
深入认识JavaScript中的this指针
this指针是面向对象程序设计中的一项重要概念,它表示当前运行的对象。在实现对象的方法时,可以使用this指针来获得该对象自身的引用。
和其他面向对象的语言不同,JavaScript中的this指针是一个动态的变量,一个方法内的this指针并不是始终指向定义该方法的对象的,在上一节讲函数的apply和call方法时已经有过这样的例子。为了方便理解,再来看下面的例子:
以下是引用片段:
<script language="JavaScript" type="text/javascript">
<!--
//创建两个空对象
var obj1=new Object();
var obj2=new Object();
//给两个对象都添加属性p,并分别等于1和2
obj1.p=1;
obj2.p=2;
//给obj1添加方法,用于显示p的值
obj1.getP=function(){
alert(this.p); //表面上this指针指向的是obj1
}
//调用obj1的getP方法
obj1.getP();
//使obj2的getP方法等于obj1的getP方法
obj2.getP=obj1.getP;
//调用obj2的getP方法
obj2.getP();
//-->
</script>
从代码的执行结果看,分别弹出对话框显示1和2。由此可见,getP函数仅定义了一次,在不同的场合运行,显示了不同的运行结果,这是有this指针 的变化所决定的。在obj1的getP方法中,this就指向了obj1对象,而在obj2的getP方法中,this就指向了obj2对象,并通过 this指针引用到了两个对象都具有的属性p。
由此可见,JavaScript中的this指针是一个动态变化的变量,它表明了当前运行该函数的对象。由this指针的性质,也可以更好的理解 JavaScript中对象的本质:一个对象就是由一个或多个属性(方法)组成的集合。每个集合元素不是仅能属于一个集合,而是可以动态的属于多个集合。 这样,一个方法(集合元素)由谁调用,this指针就指向谁。实际上,前面介绍的apply方法和call方法都是通过强制改变this指针的值来实现 的,使this指针指向参数所指定的对象,从而达到将一个对象的方法作为另一个对象的方法运行。
每个对象集合的元素(即属性或方法)也是一个独立的部分,全局函数和作为一个对象方法定义的函数之间没有任何区别,因为可以把全局函数和变量看作为 window对象的方法和属性。也可以使用new操作符来操作一个对象的方法来返回一个对象,这样一个对象的方法也就可以定义为类的形式,其中的this 指针则会指向新创建的对象。在后面可以看到,这时对象名可以起到一个命名空间的作用,这是使用JavaScript进行面向对象程序设计的一个技巧。例 如:
以下是引用片段:
var namespace1=new Object();
namespace1.class1=function(){
//初始化对象的代码
}
var obj1=new namespace1.class1();
这里就可以把namespace1看成一个命名空间。
由于对象属性(方法)的动态变化特性,一个对象的两个属性(方法)之间的互相引用,必须要通过this指针,而其他语言中,this关键字是可以省略的。如上面的例子中:
以下是引用片段:
obj1.getP=function(){
alert(this.p); //表面上this指针指向的是obj1
Google Analytics 网站跳出率是什么意思?(转)
Google Analytics 网站跳出率是什么意思?
跳出率的含义是什么?
跳出率指单 页访问次数或访问者从进入(目标)页离开网站的访问次数百分比。 您可使用跳出率来衡量访问质量,高跳出率通常表示网站进入页对您的访问者不具针对性。 目标网页越有吸引力,就会有更多访问者在您的网站上停留并进行转换。 通过针对各个关键字和您所投放的各个广告来分别定制目标网页,可最大限度地降低跳出率。 目标网页应提供广告中承诺的信息和服务。
要查看您网站的跳出率,请转到跳出率报告(位于访问者 > 访问者趋势 > 跳出率)。
打 个比方,有人从Google上搜索"CSS"这个关键词,然后通过点击搜索结果,链接到了我们的网站上一篇名为"CSS-我的爱与恨"的文章上。但是该用 户在浏览完这篇文章以后,就关闭了浏览器(或者通过地址栏去浏览其他网站,或者点击了我们网站上的友情链接)。这种用户,就是跳出率的分子(全部用户为分 母)了。
网站跳出率是衡量网站质量的一个标准,当然,这也要看网站本身的性质,那种娱乐新闻站阿,MM图片站阿,本身的跳出率就应该是非常低的。反之,像我们这种技术类的BLOG,跳出率相对来说就会高很多....(恩,有些自我安慰的意思=.=)
如果你正在为一个网站做SEO,不单是搜索引擎上的排名需要关心,Seo,内容为王。关注类似于网站跳出率这种指数,比单纯的提高排名,要来得重要。
无源器件和有源器件的区别(转)
简单地讲就是需能(电)源的器件叫有源器件,无需能(电)源的器件就是无源器件。有源器件一般用来信号放大、变换等,无源器件用来进行信号传输,或者通过方向性进行"信号放大"。 容、阻、感都是无源器件,IC、模块等都是有源器件。无源=Leadfree device
无源器件(passive devices,主�元件),也有的叫�性元件,在�路中的��特性�一�直�.
有源器件(active devices,主�元件),也有的叫�性元件,在�路中的��特性非一�直�.
在分析电子电路功能和技术参数时,一般把电子元器件分为无源器件和有源器件两大类。
1. 无源器件的简单定义
如果电子元器件工作时,其内部没有任何形式的电源,则这种器件叫做无源器件。
从电路性质上看,无源器件有两个基本特点:
(1) 自身或消耗电能,或把电能转变为不同形式的其他能量。
(2) 只需输入信号,不需要外加电源就能正常工作。
2. 有源器件的基本定义
如果电子元器件工作时,其内部有电源存在,则这种器件叫做有源器件。
从电路性质上看,有源器件有两个基本特点:
(1) 自身也消耗电能。
(2) 除了输入信号外,还必须要有外加电源才可以正常工作。
由此可知,有源器件和无源器件对电路的工作条件要求、工作方式完全不同,这在电子技术的学习过程中必须十分注意。
一. 常见的无源电子器件
电子系统中的无源器件可以按照所担当的电路功能分为电路类器件、连接类器件。
1. 电路类器件
(1) 二极管(diode)
(2) 电阻器(resistor)
(3) 电阻排(resistor network)
(4) 电容器(capacitor)
(5) 电感(inductor)
(6) 变压器(transformer)
(7) 继电器(relay)
(8) 按键(key)
(9) 蜂鸣器、喇叭(speaker)
(10) 开关(switch)
2. 连接类器件
(1) 连接器(connector)
(2) 插座(shoket)
(3) 连接电缆(line)
(4) 印刷电路板(PCB)
二. 常见的有源电子器件
有源器件是电子电路的主要器件,从物理结构、电路功能和工程参数上,有源器件可以分为分立器件和集成电路两大类。
1. 分立器件
(1) 双极型晶体三极管(bipolar transistor),一般简称三极管,BJT
(2) 场效应晶体管(field effective transistor)
(3) 晶闸管(thyristor),也叫可控硅
(4) 半导体电阻与电容――用集成技术制造的电阻和电容,用于集成电路中。
2. 模拟集成电路器件
模拟集成电路器件是用来处理随时间连续变化的模拟电压或电流信号的集成电路器件。
基本模拟集成电路器件一般包括:
(1) 集成运算放大器(operation amplifier),简称集成运放
(2) 比较器(comparator)
(3) 对数和指数放大器
(4) 模拟乘/除法器(multiplier/divider)
(5) 模拟开关电路(analog switch)
(6) PLL电路(phase lock loop),即锁相环电路
(7) 集成稳压器(voltage regulator)
(8) 参考电源(reference source)
(9) 波形发生器(wave-form generator)
(10) 功率放大器(power amplifier)
3. 数字集成电路器件
(1) 基本逻辑门(logic gate circuit)
(2) 触发器(flip-flop)
(3) 寄存器(register)
(4) 译码器(decoder)
(5) 数据比较器(comparator)
(6) 驱动器(driver)
(7) 计数器(counter)
(8) 整形电路
(9) 可编程逻辑器件(PLD)
(10) 微处理器(microprocessor,MPU)
(11) 单片机(Microcontroller,MCU)
(12) DSP器件(Digital signal processor,DSP)