我一直想知道,因为我学习了原型继承,为什么要将父类的实例推送到子原型而不是原型本身?
var Animal = function(type){
this.type = type;
}
Animal.prototype.getType = function(){
return this.type;
}
var Cat = function(options){
this.breed = options.breed;
}
//Inheritance
Cat.prototype = new Animal('Cat');
Run Code Online (Sandbox Code Playgroud)
为什么不这样做继承呢?
Cat.prototype = Animal.prototype;
Run Code Online (Sandbox Code Playgroud)
我的猜测是,只继承原型,你不包括在构造函数(this.type)中创建的属性,但我不完全确定.有人想开导我吗?
但是,不是将一个实例放入子类原型中,而是将所有构造函数定义的属性放入原型中,从而引入可能的陷阱?我正在考虑这样一个事实:除非在构造函数中定义了原型属性,否则它们将在类的所有实例之间共享.
我正在阅读此页面,它说如果网站是SSL并且用户尝试通过常规http访问它,则应用程序不应将用户重定向到https.它应该阻止他.有人可以验证这个的有效性吗?这听起来不是一个好主意,我想知道将用户转发到https的真正风险是什么.它似乎背后没有任何技术原因,只是它是一种教育用户的好方法.
禁用对域的HTTP访问,甚至不重定向或将其链接到SSL.只是告知用户这个网站无法通过HTTP访问,他们必须通过SSL访问它.
这是针对MITM和网络钓鱼攻击的最佳做法.通过这种方式,您的用户将接受教育,即应用程序永远无法通过HTTP访问,当他们遇到网络钓鱼或MITM攻击时,他们会知道出现了问题.
保护您的应用程序免受MITM攻击和网络钓鱼攻击的最佳方法之一是教育您的用户.
我遇到了一个奇怪的滚动问题,我希望有人可以帮助我找出为什么会发生这种情况.
我已经包含了我认为与问题相关的代码部分,但很高兴用其他任何需要更新这篇文章.
我在tableview的内容插入区域中实现了一个pull to refresh视图.刷新会触发Async NSURLConnection,它从Web服务器提取数据,解析相关信息并根据需要刷新表.
这是刷新过程开始的地方:
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
if (scrollView.contentOffset.y <= - 65.0f && !self.reloading) {
self.reloading = YES;
[self reloadTableViewDataSource];
[refreshHeaderView setState:EGOOPullRefreshLoading];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2];
self.tableView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f);
[UIView commitAnimations];
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果我开始滚动,而内容插入是"可见的"(即重新加载期间)我得到这种奇怪的行为,我的表格部分不会一直滚动到顶部 - 请参见截图,以清楚地看到我正在尝试在这里描述.
我在下面列了几个屏幕截图,清楚地标明了目前正在发生的事情.
有谁之前经历过这个吗?关于我应该尝试修复它的任何想法?
非常感谢Rog

如果我开始滚动表格,这就是结果.图像顶部的橙色位是实际的导航栏,我期望表格部分(2010年12月1日).

我需要一个很好的解决方案,使网格中的TextBox扩展到可用空间,但不会根据文本中的文本长度进行扩展.
我发现的大多数解决方案是制作一个虚拟边框并绑定到它的ActualWidth,但对我来说它是一个hacky解决方案.边界解决方案需要在边界设置一个小的边缘,这是不好的.将其设置为低将导致UI表现得非常奇怪.不喜欢这个解决方案.必须有一个更好的?我想要的是文本框不能随其内容扩展.它不应该那么难.请让我知道如何做到这一点.
编辑:
我注意到的一件奇怪的事情是,以下代码使边框变得更大,然后必须是:
<Grid>
<Border Name="dummy1" Background="Red" />
<TextBox Text="23242342343555554234234444444444423423423432344444444" Width="{Binding ActualWidth, ElementName=dummy1}" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
替换边框和文本框顺序使边框很好地适应文本框,但我需要的是相反的.如前所述,将边距(在边框上)设置为至少0.5会使其工作,但结果会有一点麻烦的UI.
你们其中一个人是否知道如何在应用程序的主线程中捕获特定线程中抛出的异常?
例如,我有一个非常简单的线程做一些基本的东西:
try
{
Thread t = new Thread(new ThreadStart(Cache.initialize));
t.Start();
t.Name = "loading";
while (t.IsAlive)
{
progressBar1.PerformStep();
}
}
catch (PropertyOrFieldNotInitializedException ex)
{
Console.WriteLine(ex.StackTrace);
MessageBox.Show("L'application ne peut se connecter au serveur, vérifiez votre connexion");
}
Run Code Online (Sandbox Code Playgroud)
问题是这个catch没用,因为在主栈中不会检索异常.
public static void initialize()
{
try
{
ctxMdv = new ClientContext(Configuration.getInstance().UrlMdv);
...
}
catch (PropertyOrFieldNotInitializedException e) //si le serveur n'est pas démarré
{
throw ;
}
Run Code Online (Sandbox Code Playgroud)
这里的一切都停在"抛出"并且没有任何处理,即使在主堆栈中我试图抓住它显示一个消息框.那我怎么能抓住我的线程中引发的PropertyOrFieldNotInitializedException呢?您是否有一些最佳实践来从c#中的线程中捕获异常?
非常感谢你 !
PS:好的,多亏了Thorsten Dittmar给出的答案,我可以让它像那样工作:这里是主线程
BackgroundWorker bw = new BackgroundWorker();
bw.WorkerReportsProgress = true;
bw.DoWork += new DoWorkEventHandler(bw_DoWork); …Run Code Online (Sandbox Code Playgroud) 如果应用程序包含某些默认意图,是否可以唯一地监听主页按钮?我已经检查了生命周期方法,但是当我启动默认意图和主页按钮时它将执行.
我有两个数组,A和B.
如果B中存在这些元素,如何从A中删除元素?
例如阵列A:{1,2,3,4,5},阵列B:{1,3}
我想从数组A中删除1和3,使得数组A在操作后仅包含2,4,5.
除了循环之外,还有更有效的方法吗?
我有两个矩形,每个矩形由一组四个坐标标识.我已经读过如何看它们是否相交,但我怎样才能计算出交叉区域?矩形不是轴对齐的.
这有OpenCV功能吗?我被告知有,但我找不到.
我需要编写一些Java代码来连接到LDAP服务器以验证用户提供的LDAP帐户信息是否正确,然后我需要从该用户可以看到的服务器获取属性名称.是否有一些推荐的Java客户端库?如果是的话,哪一个?
提前致谢!
cocoa-touch ×2
.net ×1
android ×1
c# ×1
c++ ×1
client ×1
cocoa ×1
collections ×1
https ×1
intersection ×1
iphone ×1
java ×1
javascript ×1
jquery ×1
jquery-ui ×1
ldap ×1
objective-c ×1
prototype ×1
security ×1
ssl ×1
stretch ×1
textbox ×1
uitableview ×1
width ×1
wpf ×1